モデルフェイルオーバー
OpenClaw は障害を 2 段階で処理します。- 現在のプロバイダー内での 認証プロファイルのローテーション。
agents.defaults.model.fallbacks内の次のモデルへの モデルフォールバック。
認証ストレージ(キー + OAuth)
OpenClaw は、API キーと OAuth トークンの両方に 認証プロファイル を使用します。- シークレットは
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(レガシー:~/.openclaw/agent/auth-profiles.json)に保存されます。 - 設定
auth.profiles/auth.orderは メタデータ + ルーティングのみ(シークレットは含みません)。 - レガシーのインポート専用 OAuth ファイル:
~/.openclaw/credentials/oauth.json(初回使用時にauth-profiles.jsonにインポートされます)。
type: "api_key"→{ provider, key }type: "oauth"→{ provider, access, refresh, expires, email? }(一部のプロバイダーではprojectId/enterpriseUrlを使用)
プロファイル ID
OAuth ログインは個別のプロファイルを作成するため、複数アカウントを共存させることができます。- デフォルト: メールアドレスが取得できない場合は
provider:default。 - メールアドレス付きの OAuth:
provider:<email>(例:google-antigravity:[email protected])。
~/.openclaw/agents/<agentId>/agent/auth-profiles.json の profiles 配下に保存されます。
ローテーション順
あるプロバイダーに複数のプロファイルがある場合、OpenClaw は次の順序で選択します。- 明示的な設定:
auth.order[provider](設定されている場合)。 - 設定済みプロファイル: プロバイダーでフィルタされた
auth.profiles。 - 保存済みプロファイル: プロバイダーに対応する
auth-profiles.jsonのエントリ。
- 主キー: プロファイルの種類(OAuth が API キーより先)。
- 副キー:
usageStats.lastUsed(各種類内で古いものが先)。 - クールダウン中/無効化されたプロファイル は末尾に移動され、失効が最も早い順に並びます。
セッションのスティッキー化(キャッシュフレンドリー)
OpenClaw は、プロバイダーのキャッシュを温めたままにするため、セッションごとに選択された認証プロファイルを固定します。 すべてのリクエストごとにローテーションすることはありません。固定されたプロファイルは、次の場合まで再利用されます。 リクエストごとに回転しません**。 ピン留めされたプロファイルは次のまで再利用されます:- セッションがリセットされた場合(
/new//reset) - コンパクションが完了した場合(コンパクション回数が増加)
- プロファイルがクールダウン中または無効化された場合
/model …@<profileId> による手動選択は、そのセッションに対する ユーザーオーバーライド を設定し、
新しいセッションが開始されるまで自動ローテーションされません。
自動で固定されたプロファイル(セッションルーターによって選択)は 優先設定 として扱われます。
最初に試行されますが、レート制限やタイムアウト時には OpenClaw が別のプロファイルにローテーションする場合があります。
ユーザー固定のプロファイルはそのプロファイルにロックされたままです。失敗し、モデルフォールバックが設定されている場合、
OpenClaw はプロファイルを切り替えるのではなく、次のモデルに移動します。
ユーザー固定プロファイルは、そのプロファイルにロックされたままです。 失敗し、モデルフォールバック
が設定されている場合、OpenClawはプロファイルを切り替える代わりに次のモデルに移動します。
OAuth が「消えたように見える」理由
同一プロバイダーに OAuth プロファイルと API キー プロファイルの両方がある場合、固定されていないと、 ラウンドロビンによりメッセージ間で切り替わることがあります。単一のプロファイルを強制するには次のいずれかを行います。 単一のプロファイルを強制するには: 単一のプロファイルを強制するには:auth.order[provider] = ["provider:profileId"]で固定する、または- UI/チャット画面でサポートされている場合、
/model …によるセッション単位のオーバーライドでプロファイルを指定する。
クールダウン
認証/レート制限エラー(またはレート制限に見えるタイムアウト)によりプロファイルが失敗した場合、 OpenClaw はそのプロファイルをクールダウンに設定し、次のプロファイルに移動します。 フォーマット/無効リクエスト エラー(例: Cloud Code Assist のツール呼び出し ID 検証失敗)も フェイルオーバー対象として扱われ、同じクールダウンが適用されます。 フォーマット/無効要求エラー(例えば、Cloud Code Assist ツールコール ID 検証失敗)は、フェイルオーバーに値するものとして扱われ、同じクールダウンを使用します。 フォーマット/無効要求エラー(例えば、Cloud Code Assist ツールコール ID 検証失敗)は、フェイルオーバーに値するものとして扱われ、同じクールダウンを使用します。 クールダウンは指数バックオフを使用します。- 1 分
- 5 分
- 25 分
- 1 時間(上限)
auth-profiles.json の usageStats 配下に保存されます。
課金による無効化
請求/クレジットの失敗(例えば「クレジット不足」や「クレジット残高が低すぎる」など)は、フェイルオーバー価値として扱われますが、通常は一時的ではありません。 短いクールダウンの代わりに、OpenClawはプロファイルを無効化(バックオフ時間が長い)としてマークし、次のプロファイル/プロバイダに回転します。 状態はauth-profiles.json に保存されます。
- 請求バックオフは5時間、請求失敗ごとに2倍、24時間で始まります。
- プロファイルが 24 時間 失敗していない場合、バックオフカウンターはリセットされます(設定可能)。
モデルフォールバック
あるプロバイダーのすべてのプロファイルが失敗した場合、OpenClaw はagents.defaults.model.fallbacks 内の次のモデルに移動します。これは、認証失敗、レート制限、
およびプロファイルローテーションを使い切ったタイムアウトに適用されます
(その他のエラーではフォールバックは進みません)。 これは、プロファイルの回転を使い果たした認証失敗、レート制限、および
タイムアウトに適用されます(他のエラーはフォールバックを進めません)。 これは、プロファイルの回転を使い果たした認証失敗、レート制限、および
タイムアウトに適用されます(他のエラーはフォールバックを進めません)。
フックや CLI によるモデルオーバーライドで実行が開始された場合でも、
設定されたフォールバックを試行した後、フォールバックの終了点は agents.defaults.model.primary になります。
関連設定
次については Gateway 設定 を参照してください。auth.profiles/auth.orderauth.cooldowns.billingBackoffHours/auth.cooldowns.billingBackoffHoursByProviderauth.cooldowns.billingMaxHours/auth.cooldowns.failureWindowHoursagents.defaults.model.primary/agents.defaults.model.fallbacksagents.defaults.imageModelのルーティング