メインコンテンツへスキップ

OAuth

OpenClaw は、提供しているプロバイダーに対して OAuth による「subscription auth」をサポートします(特に OpenAI Codex(ChatGPT OAuth))。Anthropic のサブスクリプションについては setup-token フローを使用してください。本ページでは次を説明します。 Anthropic サブスクリプションの場合は、setup-token フローを使用します。 このページは以下のように説明しています。 Anthropic サブスクリプションの場合は、setup-token フローを使用します。 このページは以下のように説明しています。
  • OAuth の トークン交換 の仕組み(PKCE)
  • トークンが 保存 される場所(およびその理由)
  • 複数アカウント の扱い方(プロファイル + セッション単位のオーバーライド)
OpenClaw は、独自の OAuth または API キーのフローを提供する provider plugins もサポートします。次で実行してください。 以下で実行します: 以下で実行します:
openclaw models auth login --provider <id>

トークンシンク(存在理由)

OAuth プロバイダーは、ログイン/更新フロー中に 新しいリフレッシュトークン を発行するのが一般的です。一部のプロバイダー(または OAuth クライアント)では、同一ユーザー/アプリに対して新しいトークンが発行されると、古いリフレッシュトークンが無効化されることがあります。 いくつかのプロバイダー (または OAuth クライアント) は、同じユーザ/アプリケーションに対して新しいものが発行された場合、古い更新トークンを無効にできます。 いくつかのプロバイダー (または OAuth クライアント) は、同じユーザ/アプリケーションに対して新しいものが発行された場合、古い更新トークンを無効にできます。 実際の症状:
  • OpenClaw Claude Code/Codex CLI の両方でログインすると、後になってどちらかがランダムに「ログアウト」される
これを軽減するため、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(状態は上書きされます)を尊重します。 上記のすべても、$OPENCLAW_STATE_DIR(状態は上書きされます)を尊重します。 上記はすべて $OPENCLAW_STATE_DIR(状態ディレクトリのオーバーライド)にも対応します。完全なリファレンス:/gateway/configuration

Anthropic setup-token(subscription auth)

任意のマシンで claude setup-token を実行し、その結果を OpenClaw に貼り付けます。
openclaw models auth setup-token --provider anthropic
別の場所でトークンを生成した場合は、手動で貼り付けてください。
openclaw models auth paste-token --provider anthropic
確認:
openclaw models status

OAuth 交換(ログインの仕組み)

OpenClaw の対話型ログインフローは @mariozechner/pi-ai に実装され、ウィザード/コマンドに接続されています。

Anthropic(Claude Pro/Max)setup-token

フローの形:
  1. claude setup-token を実行
  2. トークンを OpenClaw に貼り付け
  3. トークン認証プロファイルとして保存(更新なし)
ウィザードの経路は openclaw onboard → 認証の選択 setup-token(Anthropic)です。

OpenAI Codex(ChatGPT OAuth)

フローの形(PKCE):
  1. PKCE の verifier/challenge とランダムな 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 です。

更新 + 期限切れ

プロファイルは 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 --jsonauth[] を表示)
関連ドキュメント: