openclaw secrets apply によって強制される厳密なコントラクトを定義します。ターゲットがこれらのルールに一致しない場合、apply はどのファイルも変更する前に失敗します。
プランファイルの形状
openclaw secrets apply --from <plan.json> は、プランターゲットの targets 配列を想定します。
openclaw secrets configure はこの形状でプランを生成します。手書きまたは編集することもできます。
プロバイダーの upsert と削除
プランには、ターゲットごとの書き込みに加えてsecrets.providers マップを変更する、2 つの任意のトップレベルフィールドを含めることもできます。
providerUpserts— プロバイダーエイリアスをキーにしたオブジェクトです。各値はプロバイダー定義です(openclaw.jsonのsecrets.providers.<alias>で受け付けられるものと同じ形状。例:execまたはfileプロバイダー)。providerDeletes— 削除するプロバイダーエイリアスの配列です。
providerUpserts は targets より前に実行されるため、target.ref.provider は同じプランが providerUpserts で導入するプロバイダーエイリアスを参照できます。この順序がない場合、openclaw.json でまだ構成されていないエイリアスを参照するプランは、provider "<alias>" is not configured で失敗します。
providerUpserts を通じて導入された exec プロバイダーにも、exec プロバイダー同意動作 の exec 同意ルールが適用されます。exec プロバイダーを含むプランでは、書き込みモードで --allow-exec が必要です。
サポートされるターゲットスコープ
プランターゲットは、SecretRef 認証情報サーフェス のサポートされる認証情報パスで受け付けられます。ターゲットタイプの動作
target.type は認識されるターゲットタイプである必要があり、正規化された target.path はそのタイプの登録済みパス形状と一致する必要があります。
一部のターゲットタイプは、正規タイプ名に加えて、既存プラン向けに target.type として互換エイリアスを受け付けます。
| 正規タイプ | 受け付けるエイリアス |
|---|---|
models.providers.apiKey | models.providers.*.apiKey |
skills.entries.apiKey | skills.entries.*.apiKey |
channels.googlechat.serviceAccount | channels.googlechat.accounts.*.serviceAccount |
パス検証ルール
各ターゲットは、以下のすべてで検証されます。typeは認識されるターゲットタイプである必要があります。pathは空でないドットパスである必要があります。pathSegmentsは省略できます。指定する場合、pathと完全に同じパスに正規化される必要があります。- 禁止されたセグメントは拒否されます:
__proto__、prototype、constructor。 - 正規化されたパスは、ターゲットタイプの登録済みパス形状と一致する必要があります。
providerIdまたはaccountIdが設定されている場合、パスにエンコードされた ID と一致する必要があります。auth-profiles.jsonターゲットにはagentIdが必要です。- 新しい
auth-profiles.jsonマッピングを作成する場合は、authProfileProviderを含めます。
失敗時の動作
ターゲットが検証に失敗すると、apply は次のようなエラーで終了します。exec プロバイダー同意動作
--dry-runはデフォルトで exec SecretRef チェックをスキップします。- exec SecretRef/プロバイダーを含むプランは、
--allow-execが設定されていない限り、書き込みモードで拒否されます。 - exec を含むプランを検証/適用する場合は、dry-run と書き込みコマンドの両方で
--allow-execを渡します。
ランタイムと監査スコープの注記
- ref のみの
auth-profiles.jsonエントリ(keyRef/tokenRef)は、ランタイム認証情報解決と監査範囲に含まれます。 secrets applyは、サポートされるopenclaw.jsonターゲット、サポートされるauth-profiles.jsonターゲット、および 3 つの任意のスクラブパスを書き込みます。各スクラブパスはデフォルトで有効です:scrubEnv(移行済みの平文値を.envから削除)、scrubAuthProfilesForProviderTargets(プランが移行したばかりのプロバイダーについて、auth-profiles.json内の平文/未使用 ref の残留物をクリア)、scrubLegacyAuthJson(レガシーauth.jsonストアから移行済みのapi_keyエントリを削除)。そのパスをスキップするには、プラン内でoptions.scrubEnv、options.scrubAuthProfilesForProviderTargets、options.scrubLegacyAuthJsonのいずれかをfalseに設定します。
オペレーター確認
openclaw secrets configure でプランを再生成するか、ターゲットパスを上記のサポートされる形状に修正します。