OAuth
OpenClaw는 OAuth를 통한 “구독 인증”을 지원하며, 이를 제공하는 프로바이더 (주로 OpenAI Codex (ChatGPT OAuth))에서 사용할 수 있습니다. Anthropic 구독에는 setup-token 흐름을 사용하세요. 이 페이지에서는 다음을 설명합니다:- OAuth 토큰 교환이 어떻게 작동하는지 (PKCE)
- 토큰이 어디에 저장되는지 (그리고 그 이유)
- 여러 개의 계정을 어떻게 처리하는지 (프로필 + 세션별 오버라이드)
토큰 싱크 (존재 이유)
OAuth 프로바이더는 일반적으로 로그인/리프레시 흐름 중에 새 리프레시 토큰을 생성합니다. 일부 프로바이더 (또는 OAuth 클라이언트)는 동일 사용자/앱에 대해 새 토큰이 발급되면 이전의 리프레시 토큰을 무효화할 수 있습니다. 실질적인 증상:- OpenClaw와 Claude Code / Codex CLI를 통해 로그인하면 → 그 중 하나가 나중에 랜덤하게 “로그아웃”됩니다.
auth-profiles.json을 토큰 싱크로 취급합니다:
- 런타임은 한 곳에서 자격 증명을 읽습니다
- 우리는 여러 프로필을 유지하고 확정적으로 라우팅할 수 있습니다
저장소 (토큰이 저장되는 위치)
비밀은 에이전트 별로 저장됩니다:- 인증 프로필 (OAuth + API 키):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - 런타임 캐시 (자동 관리; 수정하지 마세요):
~/.openclaw/agents/<agentId>/agent/auth.json
~/.openclaw/credentials/oauth.json(처음 사용할 때auth-profiles.json에 가져옴)
$OPENCLAW_STATE_DIR (상태 디렉토리 오버라이드)을 존중합니다. 전체 참조: /gateway/configuration
Anthropic setup-token (구독 인증)
어느 기기에서든claude setup-token 명령을 실행한 후, OpenClaw에 붙여 넣으세요:
OAuth 교환 (로그인 작동 방식)
OpenClaw의 대화형 로그인 흐름은@mariozechner/pi-ai에 구현되어 있으며 마법사/명령어에 연결되어 있습니다.
Anthropic (Claude Pro/Max) setup-token
흐름 모양:claude setup-token실행- OpenClaw에 토큰 붙여 넣기
- 토큰 인증 프로필로 저장 (리프레시 없음)
openclaw onboard → 인증 선택 setup-token (Anthropic).
OpenAI Codex (ChatGPT OAuth)
흐름 모양 (PKCE):- PKCE 검증자/챌린지 + 무작위
state생성 https://auth.openai.com/oauth/authorize?...열기http://127.0.0.1:1455/auth/callback에서 콜백 잡기 시도- 콜백을 연결할 수 없거나 (원격/헤드리스인 경우), 리디렉션 URL/코드 붙여 넣기
https://auth.openai.com/oauth/token에서 교환- 액세스 토큰에서
accountId추출하여{ access, refresh, expires, accountId }저장
openclaw onboard → 인증 선택 openai-codex.
리프레시 + 만료
프로필은expires 타임스탬프를 저장합니다.
런타임 시:
expires가 미래일 경우 → 저장된 액세스 토큰 사용- 만료된 경우 → 리프레시 (파일 잠금 하에)하고 저장된 자격 증명을 덮어 씁니다
여러 계정 (프로필) + 라우팅
두 가지 패턴:1) 선호: 별도의 에이전트
“개인”과 “작업”이 절대 상호작용하지 않도록 하려면 고립된 에이전트 (별도 세션 + 자격 증명 + 작업 공간)를 사용하세요:2) 고급: 하나의 에이전트 내에서 다중 프로필
auth-profiles.json은 동일한 프로바이더에 대해 여러 프로필 ID를 지원합니다.
사용할 프로필 선택:
- 전역적으로 구성 순서에 따라 (
auth.order) - 세션별로
/model ...@<profileId>
/model Opus@anthropic:work
openclaw channels list --json(auth[]표시)
- /concepts/model-failover (회전 + 쿨다운 규칙)
- /tools/slash-commands (명령 표면)