OAuth

OpenClawはOAuthに対応しているプロバイダ(特にOpenAI Codex(ChatGPT OAuth))向けに「サブスクリプション認証」をサポートしています。Anthropicのサブスクリプションを利用する場合はsetup-tokenフローを使ってください。AnthropicはClaude Code以外でのサブスクリプション利用を過去に制限したことがあるため、利用はユーザー自身の判断とし、最新のAnthropicポリシーを必ず確認してください。OpenAI Codex OAuthはOpenClawのような外部ツールでの利用が公式にサポートされています。このページでは以下を説明します。

本番環境でAnthropicを使う場合は、サブスクリプションのsetup-token認証よりもAPIキー認証のほうが安全で推奨されます。

  • OAuthのトークン交換の仕組み(PKCE)
  • トークンの保存先(とその理由)
  • 複数アカウントの管理方法(プロファイル+セッション単位のオーバーライド)

OpenClawは独自のOAuthやAPIキーフローを持つプロバイダプラグインにも対応しています。以下のコマンドで実行できます:

openclaw models auth login --provider <id>

トークンシンク(なぜ必要か)

OAuthプロバイダはログインやリフレッシュ時に新しいリフレッシュトークンを発行するのが一般的です。プロバイダ(またはOAuthクライアント)によっては、同一ユーザー・アプリに対して新しいトークンが発行されると、古いリフレッシュトークンが無効化される場合があります。

実際に起きる症状:

  • OpenClaw_と_Claude Code / Codex CLIの両方でログインすると、後から片方が突然「ログアウト」される

これを防ぐため、OpenClawはauth-profiles.jsonトークンシンクとして扱います:

  • ランタイムは一箇所から認証情報を読み取る
  • 複数のプロファイルを保持し、確定的にルーティングできる

保存先(トークンの保管場所)

シークレットはエージェント単位で保存されます:

  • 認証プロファイル(OAuth+APIキー+オプションの値レベル参照):~/.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(ステートディレクトリのオーバーライド)も反映されます。詳細は/gateway/configurationを参照してください。

静的シークレット参照やランタイムのスナップショットアクティベーションについては、シークレット管理を参照してください。

Anthropic setup-token(サブスクリプション認証)

警告: Anthropic setup-tokenのサポートは技術的な互換性であり、ポリシー上の保証ではありません。 AnthropicはClaude Code以外でのサブスクリプション利用を過去にブロックしたことがあります。 サブスクリプション認証を使うかどうかはご自身で判断し、Anthropicの最新規約を確認してください。

任意のマシンで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 setup-token

フローの流れ:

  1. claude setup-tokenを実行
  2. そのトークンをOpenClawに貼り付け
  3. トークン認証プロファイルとして保存(リフレッシュなし)

ウィザードのパス:openclaw onboard → 認証方式でsetup-tokenを選択(Anthropic)。

OpenAI Codex(ChatGPT OAuth)

OpenAI Codex OAuthは、Codex CLI以外(OpenClawのワークフローを含む)での利用が公式にサポートされています。

フローの流れ(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[]が表示されます)

関連ドキュメント: