オープン認証
OpenClaw での OAuth:トークン交換、ストレージ、およびマルチアカウントパターン
OpenClaw は、OAuth 経由で"サブスクリプション認証"を提供するプロバイダー(特に OpenAI Codex (ChatGPT OAuth))をサポートしています。Anthropic サブスクリプションの場合は、setup-token フローを使用してください。このページでは、以下について説明します:
- OAuth トークン交換がどのように機能するか(PKCE)
- トークンがどこに保存されるか(および理由)
- 複数のアカウントを処理する方法(プロファイル + セッションごとのオーバーライド)
OpenClaw は、独自の OAuth または API キーフローを提供するプロバイダープラグインもサポートしています。以下を使用して実行します:
openclaw models auth login --provider <id>
トークンシンク(なぜ存在するのか)
OAuth プロバイダーは通常、ログイン/更新フロー中に新しい更新トークンを作成します。一部のプロバイダー(または OAuth クライアント)は、同じユーザー/アプリケーションに対して新しい更新トークンが発行されると、古い更新トークンを無効にする場合があります。
実際の症状:
- OpenClaw _と_ Claude Code / Codex CLI 経由でログインする → そのうちの 1 つが後でランダムに"ログアウト"する
これを減らすために、OpenClaw は ''auth-profiles.json'' を''トークンシンク''として扱います:
- ランタイムは1 つの場所から認証情報を読み取ります
- 複数のプロファイルを保持し、決定論的にルーティングできます
ストレージ(トークンが保存される場所)
エージェントごとのシークレットストレージ:
- 認証プロファイル(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 セットアップトークン(サブスクリプション認証)
任意のマシンで ''claude setup-token'' を実行し、それを OpenClaw に貼り付けます:
openclaw models auth setup-token --provider anthropic
他の場所でトークンを生成した場合は、手動で貼り付けます:
openclaw models auth paste-token --provider anthropic
Verify:
openclaw models status
OAuth 交換(ログインがどのように機能するか)
OpenClaw の対話型ログインフローは ''@mariozechner/pi-ai'' で実装され、ウィザード/コマンドに接続されています。
Anthropic (Claude Pro/Max) セットアップトークン
フローの形状:
1. ''claude setup-token'' を実行します
2. トークンを OpenClaw に貼り付けます
3. トークン認証プロファイルとして保存されます(更新なし)'
'ウィザードパスは ''openclaw onboard'' → 認証選択 ''setup-token'' (Anthropic)。
OpenAI Codex (ChatGPT OAuth)
フローの形状(PKCE):
1. PKCE 検証者/チャレンジ + ランダムな ''state'' を生成します
2. ''https://auth.openai.com/oauth/authorize?...'' を開きます
3. ''http://127.0.0.1:1455/auth/callback'' でコールバックをキャプチャしようとします
4. コールバックをバインドできない場合(またはリモート/ヘッドレスの場合)、リダイレクト URL/コードを貼り付けます
5. ''https://auth.openai.com/oauth/token'' で交換します
6. アクセストークンから ''accountId'' を抽出し、''{ access, refresh, expires, accountId }'' を保存します
ウィザードパスは ''openclaw onboard'' → 認証選択 ''openai-codex''。
Refresh + expiry
プロファイルは ''expires'' タイムスタンプを保存します。
ランタイム時:
- ''expires'' が未来の場合 → 保存されたアクセストークンを使用します
- 有効期限切れの場合 → (ファイルロック下で)更新し、保存された認証情報を上書きします'
'更新フローは自動です。通常、トークンを手動で管理する必要はありません。
複数のアカウント(プロファイル)+ ルーティング
2 つのモード:
1) 推奨:分離されたエージェント
"個人"と"仕事"が決して相互作用しないようにしたい場合は、分離されたエージェント(個別のセッション + 認証情報 + ワークスペース)を使用します:
openclaw agents add work openclaw agents add personal
次に、各エージェントの認証(ウィザード)を設定し、チャットを正しいエージェントにルーティングします。
2) 高度:1 つのエージェント内の複数のプロファイル
''auth-profiles.json'' は、同じプロバイダーの複数のプロファイル ID をサポートしています。
使用するプロファイルを選択します:
- 設定順序でグローバルに (''auth.order'')
- ''/model ...@<profileId>'' でセッションごとに
例(セッションオーバーライド):
- ''/model Opus@anthropic:work''
どのプロファイル ID が存在するかを確認する方法:
- ''openclaw channels list --json''(''auth[]'' を表示)
関連ドキュメント:
- ''/concepts/model-failover''(ローテーション + クールダウンルール)'
'- ''/tools/slash-commands''(コマンドインターフェース)