Gateway
Kontrak rencana penerapan rahasia
Halaman ini mendefinisikan kontrak ketat yang diberlakukan oleh openclaw secrets apply.
Jika sebuah target tidak cocok dengan aturan ini, apply gagal sebelum memutasi konfigurasi.
Bentuk file rencana
openclaw secrets apply --from <plan.json> mengharapkan array targets berisi target rencana:
{ version: 1, protocolVersion: 1, targets: [ { type: "models.providers.apiKey", path: "models.providers.openai.apiKey", pathSegments: ["models", "providers", "openai", "apiKey"], providerId: "openai", ref: { source: "env", provider: "default", id: "OPENAI_API_KEY" }, }, { type: "auth-profiles.api_key.key", path: "profiles.openai:default.key", pathSegments: ["profiles", "openai:default", "key"], agentId: "main", ref: { source: "env", provider: "default", id: "OPENAI_API_KEY" }, }, ],}Upsert dan penghapusan penyedia
Rencana juga dapat menyertakan dua field tingkat atas opsional yang memutasi peta
secrets.providers bersama penulisan per target:
providerUpserts— objek yang dikunci berdasarkan alias penyedia. Setiap nilai adalah definisi penyedia (bentuk yang sama yang diterima di bawahsecrets.providers.<alias>dalamopenclaw.json, misalnya penyediaexecataufile).providerDeletes— array alias penyedia yang akan dihapus.
providerUpserts berjalan sebelum targets, sehingga target.ref.provider dapat
mereferensikan alias penyedia yang diperkenalkan oleh rencana yang sama dalam
providerUpserts. Tanpa ini, rencana yang mereferensikan alias yang belum
dikonfigurasi dalam openclaw.json gagal dengan provider "<alias>" is not configured.
{ version: 1, protocolVersion: 1, providerUpserts: { onepassword_anthropic: { source: "exec", command: "/usr/bin/op", args: ["read", "op://Vault/Anthropic/credential"], }, }, providerDeletes: ["legacy_unused_alias"], targets: [ { type: "models.providers.apiKey", path: "models.providers.anthropic.apiKey", pathSegments: ["models", "providers", "anthropic", "apiKey"], providerId: "anthropic", ref: { source: "exec", provider: "onepassword_anthropic", id: "credential" }, }, ],}Penyedia exec yang diperkenalkan melalui providerUpserts tetap tunduk pada
aturan persetujuan exec dalam Perilaku persetujuan penyedia exec:
rencana yang berisi penyedia exec memerlukan --allow-exec dalam mode tulis.
Cakupan target yang didukung
Target rencana diterima untuk jalur kredensial yang didukung dalam:
Perilaku jenis target
Aturan umum:
target.typeharus dikenali dan harus cocok dengan bentuktarget.pathyang dinormalisasi.
Alias kompatibilitas tetap diterima untuk rencana yang sudah ada:
models.providers.apiKeyskills.entries.apiKeychannels.googlechat.serviceAccount
Aturan validasi jalur
Setiap target divalidasi dengan semua aturan berikut:
typeharus berupa jenis target yang dikenali.pathharus berupa jalur titik yang tidak kosong.pathSegmentsdapat dihilangkan. Jika disediakan, nilainya harus dinormalisasi menjadi jalur yang persis sama denganpath.- Segmen terlarang ditolak:
__proto__,prototype,constructor. - Jalur yang dinormalisasi harus cocok dengan bentuk jalur terdaftar untuk jenis target.
- Jika
providerIdatauaccountIddiatur, nilainya harus cocok dengan id yang dikodekan dalam jalur. - Target
auth-profiles.jsonmemerlukanagentId. - Saat membuat pemetaan
auth-profiles.jsonbaru, sertakanauthProfileProvider.
Perilaku kegagalan
Jika sebuah target gagal validasi, apply keluar dengan error seperti:
Invalid plan target path for models.providers.apiKey: models.providers.openai.baseUrlTidak ada penulisan yang dikomit untuk rencana yang tidak valid.
Perilaku persetujuan penyedia exec
--dry-runmelewati pemeriksaan exec SecretRef secara default.- Rencana yang berisi exec SecretRefs/penyedia ditolak dalam mode tulis kecuali
--allow-execdiatur. - Saat memvalidasi/menerapkan rencana yang berisi exec, berikan
--allow-execdalam perintah dry-run dan tulis.
Catatan cakupan runtime dan audit
- Entri
auth-profiles.jsonyang hanya ref (keyRef/tokenRef) disertakan dalam resolusi runtime dan cakupan audit. secrets applymenulis targetopenclaw.jsonyang didukung, targetauth-profiles.jsonyang didukung, dan target scrub opsional.
Pemeriksaan operator
# Validate plan without writesopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --dry-run # Then apply for realopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json # For exec-containing plans, opt in explicitly in both modesopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --dry-run --allow-execopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --allow-execJika apply gagal dengan pesan jalur target yang tidak valid, buat ulang rencana dengan openclaw secrets configure atau perbaiki jalur target ke bentuk yang didukung di atas.