Gateway
비밀 정보 적용 계획 계약
이 페이지는 openclaw secrets apply가 강제하는 엄격한 계약을 정의합니다.
대상이 이 규칙과 일치하지 않으면, 구성 변경 전에 apply가 실패합니다.
계획 파일 형태
openclaw secrets apply --from <plan.json>은 계획 대상의 targets 배열을 예상합니다.
{ 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" }, }, ],}Provider 업서트와 삭제
계획에는 대상별 쓰기와 함께 secrets.providers 맵을 변경하는 두 개의 선택적 최상위 필드도 포함할 수 있습니다.
providerUpserts— provider 별칭을 키로 사용하는 객체입니다. 각 값은 provider 정의(openclaw.json의secrets.providers.<alias>아래에서 허용되는 것과 동일한 형태, 예:exec또는fileprovider)입니다.providerDeletes— 제거할 provider 별칭의 배열입니다.
providerUpserts는 targets보다 먼저 실행되므로, target.ref.provider가
동일한 계획이 providerUpserts에서 도입하는 provider 별칭을 참조할 수 있습니다.
이것이 없으면 아직 openclaw.json에 구성되지 않은 별칭을 참조하는 계획은
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" }, }, ],}providerUpserts를 통해 도입된 Exec provider도 Exec provider 동의 동작의
exec 동의 규칙이 적용됩니다. exec provider가 포함된 계획은 쓰기 모드에서
--allow-exec가 필요합니다.
지원되는 대상 범위
계획 대상은 다음의 지원되는 자격 증명 경로에 대해 허용됩니다.
대상 유형 동작
일반 규칙:
target.type은 인식되어야 하며 정규화된target.path형태와 일치해야 합니다.
기존 계획을 위해 호환성 별칭은 계속 허용됩니다.
models.providers.apiKeyskills.entries.apiKeychannels.googlechat.serviceAccount
경로 검증 규칙
각 대상은 다음 모두로 검증됩니다.
type은 인식되는 대상 유형이어야 합니다.path는 비어 있지 않은 점 경로여야 합니다.pathSegments는 생략할 수 있습니다. 제공된 경우path와 정확히 동일한 경로로 정규화되어야 합니다.- 금지된 세그먼트는 거부됩니다:
__proto__,prototype,constructor. - 정규화된 경로는 대상 유형에 등록된 경로 형태와 일치해야 합니다.
providerId또는accountId가 설정된 경우, 경로에 인코딩된 id와 일치해야 합니다.auth-profiles.json대상에는agentId가 필요합니다.- 새
auth-profiles.json매핑을 만들 때는authProfileProvider를 포함하세요.
실패 동작
대상이 검증에 실패하면 apply는 다음과 같은 오류와 함께 종료됩니다.
Invalid plan target path for models.providers.apiKey: models.providers.openai.baseUrl잘못된 계획에 대해서는 쓰기가 커밋되지 않습니다.
Exec provider 동의 동작
--dry-run은 기본적으로 exec SecretRef 검사를 건너뜁니다.- exec SecretRef/provider가 포함된 계획은
--allow-exec가 설정되지 않는 한 쓰기 모드에서 거부됩니다. - exec가 포함된 계획을 검증/적용할 때는 dry-run 및 쓰기 명령 모두에
--allow-exec를 전달하세요.
런타임 및 감사 범위 참고 사항
- ref 전용
auth-profiles.json항목(keyRef/tokenRef)은 런타임 해석 및 감사 범위에 포함됩니다. secrets apply는 지원되는openclaw.json대상, 지원되는auth-profiles.json대상, 선택적 스크럽 대상에 씁니다.
운영자 검사
# 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-execapply가 잘못된 대상 경로 메시지와 함께 실패하면 openclaw secrets configure로 계획을 다시 생성하거나 대상 경로를 위의 지원되는 형태로 수정하세요.