OAuth
OpenClaw는 이를 제공하는 provider에 대해 OAuth를 통한 “subscription auth”를 지원합니다 (특히 OpenAI Codex (ChatGPT OAuth)). Anthropic의 경우 현재의 실질적인 구분은 다음과 같습니다:- Anthropic API key: 일반 Anthropic API 과금
- OpenClaw 내부의 Anthropic Claude CLI / subscription auth: Anthropic 직원이 이 사용이 다시 허용된다고 알려주었습니다
- OAuth 토큰 교환이 작동하는 방식 (PKCE)
- 토큰이 저장되는 위치(및 그 이유)
- 여러 계정을 처리하는 방법 (프로필 + 세션별 재정의)
토큰 싱크(왜 존재하는가)
OAuth provider는 로그인/갱신 흐름 중에 흔히 새 refresh token을 발급합니다. 일부 provider(또는 OAuth 클라이언트)는 동일한 사용자/앱에 대해 새 토큰이 발급되면 이전 refresh token을 무효화할 수 있습니다. 실제 증상:- OpenClaw 그리고 Claude Code / Codex CLI로 로그인하면 → 나중에 둘 중 하나가 무작위로 “로그아웃”됩니다
auth-profiles.json을 토큰 싱크로 취급합니다:
- 런타임은 한 곳에서 자격 증명을 읽습니다
- 여러 프로필을 유지하고 이를 결정론적으로 라우팅할 수 있습니다
- 자격 증명을 Codex CLI 같은 외부 CLI에서 재사용하는 경우, OpenClaw는 출처 정보를 포함해 이를 미러링하고 refresh token 자체를 회전시키는 대신 해당 외부 소스를 다시 읽습니다
저장소(토큰이 저장되는 위치)
시크릿은 에이전트별로 저장됩니다:- 인증 프로필(OAuth + API keys + 선택적 값 수준 refs):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - 레거시 호환성 파일:
~/.openclaw/agents/<agentId>/agent/auth.json(api_key정적 항목은 발견되면 정리됩니다)
~/.openclaw/credentials/oauth.json(최초 사용 시auth-profiles.json으로 import됨)
$OPENCLAW_STATE_DIR(state dir 재정의)도 따릅니다. 전체 참조: /gateway/configuration
정적 secret refs 및 런타임 스냅샷 활성화 동작은 Secrets Management를 참고하세요.
Anthropic 레거시 토큰 호환성
OpenClaw는 Anthropic setup-token도 지원되는 token-auth 경로로 노출하지만, 현재는 가능하면 Claude CLI 재사용과claude -p를 우선합니다.
Anthropic Claude CLI 마이그레이션
OpenClaw는 Anthropic Claude CLI 재사용을 다시 지원합니다. 호스트에 이미 로컬 Claude 로그인이 있으면 onboarding/configure에서 이를 직접 재사용할 수 있습니다.OAuth 교환(로그인 작동 방식)
OpenClaw의 대화형 로그인 흐름은@mariozechner/pi-ai에 구현되어 있으며 wizard/command에 연결되어 있습니다.
Anthropic setup-token
흐름 형태:- OpenClaw에서 Anthropic setup-token 또는 paste-token 시작
- OpenClaw는 결과로 얻은 Anthropic 자격 증명을 인증 프로필에 저장
- 모델 선택은
anthropic/...에 유지 - 기존 Anthropic 인증 프로필은 롤백/순서 제어를 위해 계속 사용 가능
OpenAI Codex (ChatGPT OAuth)
OpenAI Codex OAuth는 Codex CLI 외부, OpenClaw 워크플로를 포함한 환경에서 사용하도록 명시적으로 지원됩니다. 흐름 형태(PKCE):- PKCE verifier/challenge + 무작위
state생성 https://auth.openai.com/oauth/authorize?...열기http://127.0.0.1:1455/auth/callback에서 콜백 캡처 시도- 콜백에 바인딩할 수 없거나(또는 원격/헤드리스 환경인 경우) 리디렉션 URL/code 붙여넣기
https://auth.openai.com/oauth/token에서 교환- access token에서
accountId를 추출하고{ access, refresh, expires, accountId }저장
openclaw onboard → auth choice openai-codex입니다.
갱신 + 만료
프로필은expires 타임스탬프를 저장합니다.
런타임에서는:
expires가 미래 시점이면 → 저장된 access token 사용- 만료되었으면 → 새로 고침(file lock 아래에서)하고 저장된 자격 증명을 덮어씀
- 예외: 재사용된 외부 CLI 자격 증명은 외부에서 계속 관리되며, OpenClaw는 CLI 인증 저장소를 다시 읽고 복사된 refresh token 자체를 절대 사용하지 않음
여러 계정(프로필) + 라우팅
두 가지 패턴이 있습니다:1) 권장: 분리된 에이전트
“개인용”과 “업무용”이 절대 상호작용하지 않게 하려면 격리된 에이전트(별도 세션 + 자격 증명 + workspace)를 사용하세요:2) 고급: 하나의 에이전트에 여러 프로필
auth-profiles.json은 동일 provider에 대해 여러 프로필 ID를 지원합니다.
사용할 프로필 선택 방법:
- 전역적으로는 구성 순서(
auth.order)를 통해 - 세션별로는
/model ...@<profileId>를 통해
/model Opus@anthropic:work
openclaw channels list --json(auth[]표시)
- /concepts/model-failover (순환 + 쿨다운 규칙)
- /tools/slash-commands (command 표면)
관련 항목
- Authentication — 모델 provider 인증 개요
- Secrets — 자격 증명 저장소 및 SecretRef
- Configuration Reference — 인증 구성 키