GEODE . 문서
GitHub
설정
How-to

OAuth 토큰 회전

core/auth가 런타임에 실제로 하는 일입니다. 프로파일 선택, 선제 갱신, 401 자동 갱신, 쿨다운 에스컬레이션을 다룹니다.

토큰 회전의 코드 홈은 core/auth/입니다. 프로파일과 플랜의 SoT는 ~/.geode/auth.toml(core/auth/auth_toml.py,core/auth/profiles.py)이고, 호출마다 어느 프로파일을 쓸지와 언제 갱신할지는core/auth/rotation.pyProfileRotator가 정합니다.

선택과 갱신 규칙

규칙동작
타입 우선 선택oauth > token > api_key 순으로 고르고, 같은 타입 안에서는 LRU로 돌립니다.
선제 갱신관리형(managed) 토큰은 만료 120초 이내면 외부 저장소에서 다시 읽습니다. Hermes의 skew 상수를 그대로 빌렸습니다.
401 자동 갱신인증 실패(401/403) 시 쿨다운을 적용하기 전에 한 번 더 다시 읽고, 토큰이 바뀌었으면 오류 카운트를 리셋합니다.
쿨다운calculate_cooldown_ms가 오류 횟수에 따라 쿨다운을 키웁니다. 키별 상태는 core/auth/cooldown.pyCooldownTracker가 보관합니다.

관리형 토큰의 대표가 Codex입니다. 수명 관리는 Codex CLI가 하고 GEODE는 ~/.codex/auth.json을 읽기만 합니다. 그래서 "갱신"은 새 토큰 발급이 아니라 외부 저장소 재독입니다. 발급이 필요하면 codex login을 다시 돌립니다.

운영 시 알아둘 것

  • thin CLI에서 /login을 마치면 데몬이 auth 상태를 다시 읽습니다. 이 리로드는 추가 전용입니다. 제거된 항목은 캐시된 싱글톤에서 즉시 빠지지 않으므로, 프로파일을 지운 뒤 확실히 하려면 데몬을 재시작합니다.
  • Codex의 선제 5시간 스로틀을 우회하려면GEODE_CODEX_OAUTH_POLL_DISABLED=1을 켭니다. 구독 버킷으로 바로 떨어집니다.
  • core/llm/credentials.pyresolve_provider_key(OAuth 우선, API 키 폴백)는 deprecated입니다. 어댑터 레지스트리의 소스별 명시 자격이 대체이고, v1.0.0 제거 대상입니다.

실패 모드

증상원인해법
한 프로파일만 계속 401외부 저장소의 토큰 자체가 만료Codex는 codex login, Anthropic 구독은 Claude Code 재로그인으로 원본 토큰을 갱신합니다.
호출이 점점 뜸해짐반복 실패로 쿨다운 에스컬레이션원인 자격을 고치면 성공 콜백이 쿨다운을 리셋합니다.
프로파일을 지웠는데 계속 쓰임데몬 리로드가 추가 전용데몬을 재시작합니다.

다음