OAuth
OpenClawは、それを提供するプロバイダー向けに、OAuthによる「サブスクリプション認証」をサポートしています (特に OpenAI Codex (ChatGPT OAuth))。Anthropicについては、実質的な区分は現在次のとおりです:- Anthropic API key: 通常のAnthropic API課金
- Anthropic Claude CLI / OpenClaw内のサブスクリプション認証: Anthropicスタッフから、この利用は再び許可されていると案内されています
- OAuthのトークン交換の仕組み(PKCE)
- トークンがどこに保存されるか(およびその理由)
- 複数アカウントの扱い方(プロファイル + セッションごとの上書き)
トークンシンク(なぜ存在するのか)
OAuthプロバイダーは、ログインやリフレッシュのフロー中に新しいrefresh tokenを発行することが一般的です。一部のプロバイダー(またはOAuthクライアント)は、同じユーザー/アプリに対して新しいものが発行されると、古いrefresh tokenを無効化することがあります。 実際の症状:- OpenClaw と Claude Code / Codex CLI の両方でログインすると、あとでどちらかがランダムに「ログアウト」される
auth-profiles.json をトークンシンクとして扱います:
- ランタイムは1か所から認証情報を読み取ります
- 複数のプロファイルを保持し、それらを決定論的にルーティングできます
- 認証情報がCodex CLIのような外部CLIから再利用される場合、OpenClawはそれらを来歴付きでミラーし、自身でrefresh tokenをローテーションする代わりに、その外部ソースを再読込します
保存先(トークンはどこに保存されるか)
シークレットはエージェントごとに保存されます:- 認証プロファイル(OAuth + API keys + 任意の値レベルref):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - 互換性維持用のレガシーファイル:
~/.openclaw/agents/<agentId>/agent/auth.json(静的なapi_keyエントリーは見つかると除去されます)
~/.openclaw/credentials/oauth.json(初回使用時にauth-profiles.jsonにインポートされます)
$OPENCLAW_STATE_DIR(state dir override)も尊重されます。完全なリファレンス: /gateway/configuration
静的SecretRefとランタイムスナップショットの有効化動作については、Secrets Management を参照してください。
Anthropicのレガシートークン互換性
OpenClawは、Anthropic setup-tokenもサポートされるトークン認証経路として公開していますが、現在は利用可能な場合にClaude CLIの再利用とclaude -p を優先します。
Anthropic Claude CLI移行
OpenClawは再びAnthropic Claude CLIの再利用をサポートしています。ホスト上ですでにClaudeにローカルログインしている場合、オンボーディング/設定でそれを直接再利用できます。OAuth交換(ログインの仕組み)
OpenClawの対話型ログインフローは@mariozechner/pi-ai に実装され、ウィザード/コマンドに接続されています。
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でコールバックを受け取ろうとする- コールバックをbindできない場合(またはリモート/ヘッドレス環境の場合)は、リダイレクトURL/codeを貼り付ける
https://auth.openai.com/oauth/tokenで交換する- access tokenから
accountIdを抽出し、{ access, refresh, expires, accountId }を保存する
openclaw onboard → 認証の選択肢 openai-codex です。
リフレッシュ + 有効期限
プロファイルにはexpires タイムスタンプが保存されます。
ランタイムでは:
expiresが未来なら → 保存済みのaccess tokenを使う- 期限切れなら → (ファイルロック下で)リフレッシュし、保存済み認証情報を上書きする
- 例外: 再利用される外部CLI認証情報は外部で管理されたままです。OpenClawはCLI認証ストアを再読込し、コピーされたrefresh token自体を消費しません
複数アカウント(プロファイル)+ ルーティング
2つのパターンがあります:1) 推奨: エージェントを分ける
「個人用」と「仕事用」を決して相互作用させたくない場合は、分離されたエージェント(別々のセッション + 認証情報 + ワークスペース)を使います:2) 上級者向け: 1つのエージェントで複数プロファイル
auth-profiles.json は、同じプロバイダーに対して複数のプロファイルIDをサポートします。
どのプロファイルを使うかの指定方法:
- グローバルには設定順序(
auth.order)経由 - セッションごとには
/model ...@<profileId>経由
/model Opus@anthropic:work
openclaw channels list --json(auth[]を表示します)
- /concepts/model-failover (ローテーション + クールダウンルール)
- /tools/slash-commands (コマンドサーフェス)
関連
- Authentication — モデルプロバイダー認証の概要
- Secrets — 認証情報の保存とSecretRef
- Configuration Reference — 認証設定キー