OAuth
OpenClaw は、提供しているプロバイダーに対して OAuth による「subscription auth」をサポートします(特に OpenAI Codex(ChatGPT OAuth))。Anthropic のサブスクリプションについては setup-token フローを使用してください。本ページでは次を説明します。 Anthropic サブスクリプションの場合は、setup-token フローを使用します。 このページは以下のように説明しています。 Anthropic サブスクリプションの場合は、setup-token フローを使用します。 このページは以下のように説明しています。- OAuth の トークン交換 の仕組み(PKCE)
- トークンが 保存 される場所(およびその理由)
- 複数アカウント の扱い方(プロファイル + セッション単位のオーバーライド)
トークンシンク(存在理由)
OAuth プロバイダーは、ログイン/更新フロー中に 新しいリフレッシュトークン を発行するのが一般的です。一部のプロバイダー(または OAuth クライアント)では、同一ユーザー/アプリに対して新しいトークンが発行されると、古いリフレッシュトークンが無効化されることがあります。 いくつかのプロバイダー (または OAuth クライアント) は、同じユーザ/アプリケーションに対して新しいものが発行された場合、古い更新トークンを無効にできます。 いくつかのプロバイダー (または OAuth クライアント) は、同じユーザ/アプリケーションに対して新しいものが発行された場合、古い更新トークンを無効にできます。 実際の症状:- OpenClaw と Claude Code/Codex CLI の両方でログインすると、後になってどちらかがランダムに「ログアウト」される
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(状態は上書きされます)を尊重します。 上記のすべても、$OPENCLAW_STATE_DIR(状態は上書きされます)を尊重します。 上記はすべて $OPENCLAW_STATE_DIR(状態ディレクトリのオーバーライド)にも対応します。完全なリファレンス:/gateway/configuration
Anthropic setup-token(subscription auth)
任意のマシンで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 の verifier/challenge とランダムな
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が将来であれば → 保存されているアクセストークンを使用- 期限切れの場合 →(ファイルロック下で)更新し、保存されている認証情報を上書き
複数アカウント(プロファイル)+ ルーティング
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(コマンドのインターフェース)