Gateway
認証情報のセマンティクス
このドキュメントは、次にまたがって使用される標準の認証情報適格性と解決セマンティクスを定義します。
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
目的は、選択時とランタイムの挙動を一致させることです。
安定したプローブ理由コード
okexcluded_by_auth_ordermissing_credentialinvalid_expiresexpiredunresolved_refno_model
トークン認証情報
トークン認証情報(type: "token")は、インラインの token と tokenRef の一方または両方をサポートします。
適格性ルール
- トークンプロファイルは、
tokenとtokenRefの両方が存在しない場合に不適格です。 expiresは任意です。expiresが存在する場合、0より大きい有限の数値でなければなりません。expiresが無効(NaN、0、負数、非有限値、または誤った型)の場合、プロファイルはinvalid_expiresとして不適格です。expiresが過去の場合、プロファイルはexpiredとして不適格です。tokenRefはexpiresの検証をバイパスしません。
解決ルール
- リゾルバーのセマンティクスは、
expiresの適格性セマンティクスと一致します。 - 適格なプロファイルでは、トークン素材をインライン値または
tokenRefから解決できます。 - 解決できない参照は、
models status --probe出力でunresolved_refを生成します。
エージェントコピーの移植性
エージェントの認証継承は読み取り透過です。エージェントにローカルプロファイルがない場合、
シークレット素材を自身の auth-profiles.json にコピーせずに、ランタイムでデフォルト/メインエージェントストアから
プロファイルを解決できます。
openclaw agents add などの明示的なコピー処理では、次の移植性ポリシーを使用します。
api_keyプロファイルは、copyToAgents: falseでない限り移植可能です。tokenプロファイルは、copyToAgents: falseでない限り移植可能です。oauthプロファイルは、更新トークンが単回使用またはローテーションに敏感な場合があるため、 デフォルトでは移植できません。- プロバイダー所有の OAuth フローは、エージェント間で更新素材をコピーしても安全であることが既知の場合にのみ、
copyToAgents: trueでオプトインできます。
移植できないプロファイルは、対象エージェントが別途サインインして自身のローカルプロファイルを作成しない限り、 読み取り透過継承を通じて引き続き利用できます。
設定専用の認証ルート
mode: "aws-sdk" を持つ auth.profiles エントリは、保存された認証情報ではなく
ルーティングメタデータです。対象プロバイダーが
models.providers.<id>.auth: "aws-sdk" または組み込みの Amazon Bedrock デフォルト
AWS SDK ルートを使用する場合に有効です。これらのプロファイル ID は、一致するエントリが
auth-profiles.json に存在しない場合でも、auth.order とセッション
オーバーライドに現れることがあります。
type: "aws-sdk" を auth-profiles.json に書き込まないでください。レガシーインストールに
そのようなマーカーがある場合、openclaw doctor --fix はそれを auth.profiles に移動し、
認証情報ストアからマーカーを削除します。
明示的な認証順序フィルタリング
- あるプロバイダーに対して
auth.order.<provider>または認証ストアの順序オーバーライドが設定されている場合、models status --probeは、そのプロバイダーの解決済み認証順序に残っている プロファイル ID のみをプローブします。 - そのプロバイダー用に保存されているプロファイルが明示的な順序から省略されている場合、
後で暗黙的に試行されることはありません。プローブ出力は、そのプロファイルを
reasonCode: excluded_by_auth_orderと詳細Excluded by auth.order for this provider.で報告します。
プローブ対象の解決
- プローブ対象は、認証プロファイル、環境認証情報、または
models.jsonから取得できます。 - プロバイダーに認証情報があるものの、OpenClaw がプローブ可能なモデル候補を
解決できない場合、
models status --probeはreasonCode: no_modelとともにstatus: no_modelを報告します。
外部 CLI 認証情報の検出
- 外部 CLI が所有するランタイム専用認証情報は、プロバイダー、ランタイム、または認証プロファイルが現在の操作の範囲内にある場合、 またはその外部ソース用に保存済みのローカルプロファイルがすでに存在する場合にのみ検出されます。
- 認証ストアの呼び出し元は、明示的な外部 CLI 検出モードを選択する必要があります。
永続化済み/Plugin 認証のみの場合は
none、すでに 保存されている外部 CLI プロファイルを更新する場合はexisting、具体的なプロバイダー/プロファイルセットの場合はscopedです。 - 読み取り専用/ステータスパスは
allowKeychainPrompt: falseを渡します。ファイルベースの 外部 CLI 認証情報のみを使用し、macOS Keychain の結果を読み取ったり再利用したりしません。
OAuth SecretRef ポリシーガード
- SecretRef 入力は静的認証情報専用です。
- プロファイル認証情報が
type: "oauth"の場合、そのプロファイル認証情報素材では SecretRef オブジェクトはサポートされません。 auth.profiles.<id>.modeが"oauth"の場合、そのプロファイルに対する SecretRef ベースのkeyRef/tokenRef入力は拒否されます。- 違反は、起動/再読み込み時の認証解決パスでハードエラーになります。
レガシー互換メッセージ
スクリプト互換性のため、プローブエラーはこの最初の行を変更しません。
Auth profile credentials are missing or expired.
人間にわかりやすい詳細と安定した理由コードは、後続の行に追加される場合があります。