OpenClawSkills
GitHub
コア概念 • 5分で読める

オープン認証

OpenClaw での OAuth:トークン交換、ストレージ、およびマルチアカウントパターン

OpenClaw は、OAuth 経由で"サブスクリプション認証"を提供するプロバイダー(特に OpenAI Codex (ChatGPT OAuth))をサポートしています。Anthropic サブスクリプションの場合は、setup-token フローを使用してください。このページでは、以下について説明します:

- OAuth トークン交換がどのように機能するか(PKCE)

- トークンがどこに保存されるか(および理由)

- 複数のアカウントを処理する方法(プロファイル + セッションごとのオーバーライド)

OpenClaw は、独自の OAuth または API キーフローを提供するプロバイダープラグインもサポートしています。以下を使用して実行します:

Bash
openclaw models auth login --provider <id>
Tutorial.step

トークンシンク(なぜ存在するのか)

OAuth プロバイダーは通常、ログイン/更新フロー中に新しい更新トークンを作成します。一部のプロバイダー(または OAuth クライアント)は、同じユーザー/アプリケーションに対して新しい更新トークンが発行されると、古い更新トークンを無効にする場合があります。

実際の症状:

- OpenClaw _と_ Claude Code / Codex CLI 経由でログインする → そのうちの 1 つが後でランダムに"ログアウト"する

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

- ランタイムは1 つの場所から認証情報を読み取ります

- 複数のプロファイルを保持し、決定論的にルーティングできます

Tutorial.step

ストレージ(トークンが保存される場所)

エージェントごとのシークレットストレージ:

- 認証プロファイル(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''

Tutorial.step

Anthropic セットアップトークン(サブスクリプション認証)

任意のマシンで ''claude setup-token'' を実行し、それを OpenClaw に貼り付けます:

Bash
openclaw models auth setup-token --provider anthropic

他の場所でトークンを生成した場合は、手動で貼り付けます:

Bash
openclaw models auth paste-token --provider anthropic

Verify:

Bash
openclaw models status
Tutorial.step

OAuth 交換(ログインがどのように機能するか)

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

Tutorial.step

Anthropic (Claude Pro/Max) セットアップトークン

フローの形状:

1. ''claude setup-token'' を実行します

2. トークンを OpenClaw に貼り付けます

3. トークン認証プロファイルとして保存されます(更新なし)'
'ウィザードパスは ''openclaw onboard'' → 認証選択 ''setup-token'' (Anthropic)。

Tutorial.step

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''。

Tutorial.step

Refresh + expiry

プロファイルは ''expires'' タイムスタンプを保存します。

ランタイム時:

- ''expires'' が未来の場合 → 保存されたアクセストークンを使用します

- 有効期限切れの場合 → (ファイルロック下で)更新し、保存された認証情報を上書きします'
'更新フローは自動です。通常、トークンを手動で管理する必要はありません。

Tutorial.step

複数のアカウント(プロファイル)+ ルーティング

2 つのモード:

Tutorial.step

1) 推奨:分離されたエージェント

"個人"と"仕事"が決して相互作用しないようにしたい場合は、分離されたエージェント(個別のセッション + 認証情報 + ワークスペース)を使用します:

Bash
openclaw agents add work
openclaw agents add personal

次に、各エージェントの認証(ウィザード)を設定し、チャットを正しいエージェントにルーティングします。

Tutorial.step

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''(コマンドインターフェース)