Contrato del plan de aplicación de Secrets
Esta página define el contrato estricto aplicado por openclaw secrets apply.
Si un destino no coincide con estas reglas, la aplicación falla antes de mutar la configuración.
Formato del archivo de plan
Sección titulada «Formato del archivo de plan»openclaw secrets apply --from <plan.json> espera una matriz targets de destinos del plan:
{ 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" }, }, ],}Actualizaciones y eliminaciones de proveedores
Sección titulada «Actualizaciones y eliminaciones de proveedores»Los planes también pueden incluir dos campos opcionales de nivel superior que modifican el mapa
secrets.providers junto con las escrituras por destino:
providerUpserts— un objeto con clave por alias de proveedor. Cada valor es una definición de proveedor (la misma forma aceptada debajo desecrets.providers.<alias>enopenclaw.json, p. ej., un proveedorexecofile).providerDeletes— una matriz de alias de proveedor para eliminar.
providerUpserts se ejecuta antes que targets, por lo que un target.ref.provider puede
hacer referencia a un alias de proveedor que el mismo plan introduce en
providerUpserts. Sin esto, los planes que hacen referencia a un alias aún no
configurado en openclaw.json fallan con 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" }, }, ],}Los proveedores de ejecución introducidos a través de providerUpserts todavía están sujetos a las
reglas de consentimiento de ejecución en Comportamiento de consentimiento del proveedor de ejecución:
los planes que contienen proveedores de ejecución requieren --allow-exec en modo de escritura.
Ámbito de destino admitido
Sección titulada «Ámbito de destino admitido»Los destinos del plan se aceptan para rutas de credenciales admitidas en:
Comportamiento del tipo de destino
Sección titulada «Comportamiento del tipo de destino»Regla general:
target.typedebe ser reconocido y debe coincidir con la forma normalizadatarget.path.
Los alias de compatibilidad siguen siendo aceptados para los planes existentes:
models.providers.apiKeyskills.entries.apiKeychannels.googlechat.serviceAccount
Reglas de validación de ruta
Sección titulada «Reglas de validación de ruta»Cada destino se valida con todo lo siguiente:
typedebe ser un tipo de destino reconocido.pathdebe ser una ruta de puntos no vacía.pathSegmentsse puede omitir. Si se proporciona, debe normalizarse exactamente a la misma ruta quepath.- Los segmentos prohibidos son rechazados:
__proto__,prototype,constructor. - La ruta normalizada debe coincidir con la forma de ruta registrada para el tipo de destino.
- Si
providerIdoaccountIdestá configurado, debe coincidir con el id codificado en la ruta. - Los destinos
auth-profiles.jsonrequierenagentId. - Al crear una nueva asignación
auth-profiles.json, incluyaauthProfileProvider.
Comportamiento de fallo
Sección titulada «Comportamiento de fallo»Si un destino falla la validación, apply sale con un error como:
Invalid plan target path for models.providers.apiKey: models.providers.openai.baseUrlNo se confirman escrituras para un plan no válido.
Comportamiento de consentimiento del proveedor de ejecución
Sección titulada «Comportamiento de consentimiento del proveedor de ejecución»--dry-runomite las comprobaciones de exec SecretRef por defecto.- Los planes que contienen exec SecretRefs/proveedores son rechazados en modo de escritura a menos que
--allow-execesté configurado. - Al validar/aplicar planes que contienen exec, pase
--allow-exectanto en comandos de simulación como de escritura.
Notas sobre el alcance de ejecución y auditoría
Sección titulada «Notas sobre el alcance de ejecución y auditoría»- Las entradas
auth-profiles.jsonsolo de referencia (keyRef/tokenRef) se incluyen en la resolución de tiempo de ejecución y la cobertura de auditoría. secrets applyescribe destinosopenclaw.jsoncompatibles, destinosauth-profiles.jsoncompatibles y destinos de limpieza opcionales.
Verificaciones del operador
Sección titulada «Verificaciones del operador»# 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-execSi apply falla con un mensaje de ruta de destino no válida, regenere el plan con openclaw secrets configure o corrija la ruta de destino a una forma compatible anteriormente.