OpenClaw은 지원되는 자격 증명을 구성에 일반 텍스트로 저장하지 않아도 되도록 additive SecretRefs를 지원합니다.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
일반 텍스트도 계속 작동합니다. SecretRefs는 자격 증명별로 선택적으로 사용합니다.
목표와 런타임 모델
비밀 값은 메모리 내 런타임 스냅샷으로 해석됩니다.- 해석은 요청 경로에서 지연 처리되지 않고, 활성화 중에 즉시 수행됩니다.
- 실질적으로 활성 상태인 SecretRef를 해석할 수 없으면 시작이 빠르게 실패합니다.
- 다시 로드는 원자적 교체를 사용합니다. 전체 성공이거나, 마지막으로 정상 확인된 스냅샷을 유지합니다.
- SecretRef 정책 위반(예: OAuth 모드 인증 프로필과 SecretRef 입력 결합)은 런타임 교체 전에 활성화를 실패시킵니다.
- 런타임 요청은 활성 메모리 내 스냅샷에서만 읽습니다.
- 첫 번째 구성 활성화/로드가 성공한 후에는, 성공적인 다시 로드가 스냅샷을 교체할 때까지 런타임 코드 경로가 해당 활성 메모리 내 스냅샷을 계속 읽습니다.
- 발신 전달 경로도 해당 활성 스냅샷에서 읽습니다(예: Discord 응답/스레드 전달 및 Telegram 작업 전송). 전송할 때마다 SecretRefs를 다시 해석하지 않습니다.
활성 표면 필터링
SecretRefs는 실질적으로 활성 상태인 표면에서만 검증됩니다.- 활성화된 표면: 해석되지 않은 참조가 시작/다시 로드를 차단합니다.
- 비활성 표면: 해석되지 않은 참조가 시작/다시 로드를 차단하지 않습니다.
- 비활성 참조는
SECRETS_REF_IGNORED_INACTIVE_SURFACE코드와 함께 치명적이지 않은 진단을 내보냅니다.
Examples of inactive surfaces
Examples of inactive surfaces
- 비활성화된 채널/계정 항목.
- 활성화된 계정이 상속하지 않는 최상위 채널 자격 증명.
- 비활성화된 도구/기능 표면.
tools.web.search.provider로 선택되지 않은 웹 검색 Provider별 키. 자동 모드(Provider 미설정)에서는 하나가 해석될 때까지 Provider 자동 감지를 위해 우선순위에 따라 키를 참조합니다. 선택 후에는 선택되지 않은 Provider 키가 선택되기 전까지 비활성으로 처리됩니다.- Sandbox SSH 인증 자료(
agents.defaults.sandbox.ssh.identityData,certificateData,knownHostsData및 에이전트별 재정의)는 기본 에이전트 또는 활성화된 에이전트의 유효 Sandbox 백엔드가ssh일 때만 활성 상태입니다. - 다음 중 하나가 참이면
gateway.remote.token/gateway.remote.passwordSecretRefs가 활성 상태입니다.gateway.mode=remotegateway.remote.url이 구성됨gateway.tailscale.mode가serve또는funnel- 이러한 원격 표면이 없는 로컬 모드:
gateway.remote.token은 토큰 인증이 우선될 수 있고 env/auth 토큰이 구성되지 않았을 때 활성 상태입니다.gateway.remote.password는 비밀번호 인증이 우선될 수 있고 env/auth 비밀번호가 구성되지 않았을 때만 활성 상태입니다.
OPENCLAW_GATEWAY_TOKEN이 설정된 경우, 해당 런타임에서는 env 토큰 입력이 우선하므로gateway.auth.tokenSecretRef는 시작 인증 해석에서 비활성입니다.
Gateway 인증 표면 진단
SecretRef가gateway.auth.token, gateway.auth.password, gateway.remote.token 또는 gateway.remote.password에 구성되면 Gateway 시작/다시 로드가 표면 상태를 명시적으로 기록합니다.
active: SecretRef가 유효 인증 표면의 일부이며 해석되어야 합니다.inactive: 다른 인증 표면이 우선하거나 원격 인증이 비활성화/비활성 상태이므로 이 런타임에서 SecretRef가 무시됩니다.
SECRETS_GATEWAY_AUTH_SURFACE와 함께 기록되며 활성 표면 정책에서 사용한 이유를 포함하므로, 자격 증명이 활성 또는 비활성으로 처리된 이유를 확인할 수 있습니다.
온보딩 참조 사전 검사
온보딩이 대화형 모드에서 실행되고 SecretRef 저장소를 선택하면, OpenClaw은 저장하기 전에 사전 검증을 실행합니다.- Env 참조: env var 이름을 검증하고 설정 중 비어 있지 않은 값이 보이는지 확인합니다.
- Provider 참조(
file또는exec): Provider 선택을 검증하고,id를 해석하며, 해석된 값 유형을 확인합니다. - Quickstart 재사용 경로:
gateway.auth.token이 이미 SecretRef인 경우, 온보딩은 동일한 빠른 실패 게이트를 사용하여 probe/dashboard 부트스트랩 전에 이를 해석합니다(env,file,exec참조).
SecretRef 계약
모든 곳에서 하나의 객체 형태를 사용합니다.- env
- file
- exec
provider는^[a-z][a-z0-9_-]{0,63}$와 일치해야 합니다.id는^[A-Z][A-Z0-9_]{0,127}$와 일치해야 합니다.
Provider 구성
secrets.providers 아래에 Provider를 정의합니다.
Env provider
Env provider
allowlist를 통한 선택적 허용 목록.- 누락되었거나 비어 있는 env 값은 해석을 실패시킵니다.
File provider
File provider
path에서 로컬 파일을 읽습니다.mode: "json"은 JSON 객체 페이로드를 예상하고id를 포인터로 해석합니다.mode: "singleValue"는 참조 id"value"를 예상하고 파일 내용을 반환합니다.- 경로는 소유권/권한 검사를 통과해야 합니다.
- Windows 실패 폐쇄 참고: 경로에 대해 ACL 검증을 사용할 수 없으면 해석이 실패합니다. 신뢰할 수 있는 경로에 한해서만 해당 Provider에
allowInsecurePath: true를 설정하여 경로 보안 검사를 우회하세요.
Exec provider
Exec provider
- 구성된 절대 바이너리 경로를 셸 없이 실행합니다.
- 기본적으로
command는 일반 파일(심볼릭 링크가 아님)을 가리켜야 합니다. - 심볼릭 링크 명령 경로(예: Homebrew shim)를 허용하려면
allowSymlinkCommand: true를 설정하세요. OpenClaw은 해석된 대상 경로를 검증합니다. - 패키지 관리자 경로(예:
["/opt/homebrew"])에는allowSymlinkCommand를trustedDirs와 함께 사용하세요. - 제한 시간, 출력 없음 제한 시간, 출력 바이트 제한, env 허용 목록, 신뢰할 수 있는 디렉터리를 지원합니다.
- Windows 실패 폐쇄 참고: 명령 경로에 대해 ACL 검증을 사용할 수 없으면 해석이 실패합니다. 신뢰할 수 있는 경로에 한해서만 해당 Provider에
allowInsecurePath: true를 설정하여 경로 보안 검사를 우회하세요.
Exec 통합 예시
1Password CLI
1Password CLI
HashiCorp Vault CLI
HashiCorp Vault CLI
sops
sops
MCP 서버 환경 변수
plugins.entries.acpx.config.mcpServers를 통해 구성된 MCP 서버 env vars는 SecretInput을 지원합니다. 이렇게 하면 API 키와 토큰이 일반 텍스트 구성에 들어가지 않습니다.
${MCP_SERVER_API_KEY} 같은 env-template 참조와 SecretRef 객체는 MCP 서버 프로세스가 생성되기 전에 Gateway 활성화 중 해석됩니다. 다른 SecretRef 표면과 마찬가지로, 해석되지 않은 참조는 acpx Plugin이 실질적으로 활성 상태일 때만 활성화를 차단합니다.
Sandbox SSH 인증 자료
Coressh Sandbox 백엔드도 SSH 인증 자료에 대해 SecretRefs를 지원합니다.
- OpenClaw는 각 SSH 호출 중에 지연 처리하지 않고, 샌드박스 활성화 중에 이러한 ref를 해석합니다.
- 해석된 값은 제한적인 권한이 적용된 임시 파일에 기록되며 생성된 SSH config에서 사용됩니다.
- 유효한 샌드박스 백엔드가
ssh가 아니면 이러한 ref는 비활성 상태로 유지되며 시작을 차단하지 않습니다.
지원되는 자격 증명 표면
정식 지원 및 미지원 자격 증명은 다음에 나열되어 있습니다.런타임에서 발급되거나 순환되는 자격 증명과 OAuth 새로 고침 자료는 읽기 전용 SecretRef 해석에서 의도적으로 제외됩니다.
필수 동작 및 우선순위
- ref가 없는 필드: 변경되지 않음.
- ref가 있는 필드: 활성 표면에서는 활성화 중에 필수입니다.
- 평문과 ref가 모두 있으면 지원되는 우선순위 경로에서는 ref가 우선합니다.
- 수정 마스킹 센티널
__OPENCLAW_REDACTED__는 내부 config 수정 마스킹/복원용으로 예약되어 있으며, 제출된 config 데이터의 리터럴 값으로는 거부됩니다.
SECRETS_REF_OVERRIDES_PLAINTEXT(런타임 경고)REF_SHADOWED(auth-profiles.json자격 증명이openclaw.jsonref보다 우선할 때의 감사 결과)
serviceAccountRef가 평문serviceAccount보다 우선합니다.- 형제 ref가 설정되어 있으면 평문 값은 무시됩니다.
활성화 트리거
시크릿 활성화는 다음에서 실행됩니다.- 시작(사전 검사 및 최종 활성화)
- Config reload hot-apply path
- Config reload restart-check path
secrets.reload를 통한 수동 reload- 편집을 저장하기 전 제출된 config 페이로드 내 활성 표면 SecretRef 해석 가능성을 확인하는 Gateway config write RPC 사전 검사(
config.set/config.apply/config.patch)
- 성공하면 스냅샷을 원자적으로 교체합니다.
- 시작 실패는 Gateway 시작을 중단합니다.
- 런타임 reload 실패는 마지막으로 정상 확인된 스냅샷을 유지합니다.
- Write-RPC 사전 검사 실패는 제출된 config를 거부하고 디스크 config와 활성 런타임 스냅샷을 모두 변경하지 않습니다.
- 아웃바운드 helper/tool 호출에 명시적인 호출별 채널 토큰을 제공해도 SecretRef 활성화는 트리거되지 않습니다. 활성화 지점은 시작, reload, 명시적
secrets.reload로 유지됩니다.
성능 저하 및 복구 신호
정상 상태 이후 reload 시점 활성화가 실패하면 OpenClaw는 시크릿 성능 저하 상태로 들어갑니다. 일회성 시스템 이벤트 및 로그 코드:SECRETS_RELOADER_DEGRADEDSECRETS_RELOADER_RECOVERED
- 성능 저하: 런타임은 마지막으로 정상 확인된 스냅샷을 유지합니다.
- 복구됨: 다음 활성화 성공 후 한 번 방출됩니다.
- 이미 성능 저하 상태인 동안 반복되는 실패는 경고를 기록하지만 이벤트를 스팸으로 방출하지 않습니다.
- 시작 fail-fast는 런타임이 활성 상태가 된 적이 없으므로 성능 저하 이벤트를 방출하지 않습니다.
명령 경로 해석
명령 경로는 Gateway 스냅샷 RPC를 통해 지원되는 SecretRef 해석을 선택적으로 사용할 수 있습니다. 두 가지 넓은 동작이 있습니다.- 엄격한 명령 경로
- 읽기 전용 명령 경로
예를 들어 원격 공유 시크릿 ref가 필요할 때의
openclaw memory remote-memory 경로와 openclaw qr --remote입니다. 이들은 활성 스냅샷에서 읽고 필수 SecretRef를 사용할 수 없으면 즉시 실패합니다.- 백엔드 시크릿 순환 후 스냅샷 새로 고침은
openclaw secrets reload가 처리합니다. - 이러한 명령 경로에서 사용되는 Gateway RPC 메서드:
secrets.resolve.
감사 및 구성 워크플로
기본 운영자 흐름:secrets audit
secrets audit
결과에는 다음이 포함됩니다.
- 저장된 평문 값(
openclaw.json,auth-profiles.json,.env, 생성된agents/*/agent/models.json) - 생성된
models.json항목의 평문 민감 provider header 잔여물 - 해석되지 않은 ref
- 우선순위 shadowing(
auth-profiles.json이openclaw.jsonref보다 우선함) - 레거시 잔여물(
auth.json, OAuth 알림)
- 기본적으로 audit은 명령 부작용을 피하기 위해 exec SecretRef 해석 가능성 검사를 건너뜁니다.
- 감사 중 exec provider를 실행하려면
openclaw secrets audit --allow-exec를 사용합니다.
- 민감 provider header 감지는 이름 휴리스틱 기반입니다(
authorization,x-api-key,token,secret,password,credential같은 일반적인 auth/credential header 이름 및 조각).
secrets configure
secrets configure
다음을 수행하는 대화형 helper입니다.
- 먼저
secrets.providers를 구성합니다(env/file/exec, 추가/편집/제거). - 하나의 agent scope에 대해
openclaw.json및auth-profiles.json의 지원되는 시크릿 포함 필드를 선택할 수 있게 합니다. - 대상 선택기에서 새
auth-profiles.jsonmapping을 직접 생성할 수 있습니다. - SecretRef 세부 정보(
source,provider,id)를 캡처합니다. - 사전 검사 해석을 실행합니다.
- 즉시 적용할 수 있습니다.
--allow-exec가 설정되지 않은 경우 사전 검사는 exec SecretRef 검사를 건너뜁니다.configure --apply에서 직접 적용하고 계획에 exec ref/provider가 포함된 경우 apply 단계에도--allow-exec를 계속 설정합니다.
openclaw secrets configure --providers-onlyopenclaw secrets configure --skip-provider-setupopenclaw secrets configure --agent <id>
configure apply 기본값:- 대상 provider에 대해
auth-profiles.json에서 일치하는 static credential 정리 auth.json에서 레거시 staticapi_key항목 정리<config-dir>/.env에서 일치하는 알려진 시크릿 줄 정리
secrets apply
secrets apply
저장된 계획 적용:Exec 참고:
- dry-run은
--allow-exec가 설정되지 않은 경우 exec 검사를 건너뜁니다. - write mode는
--allow-exec가 설정되지 않은 경우 exec SecretRef/provider가 포함된 계획을 거부합니다.
단방향 안전 정책
안전 모델:- write mode 전에 사전 검사가 성공해야 합니다.
- commit 전에 런타임 활성화가 검증됩니다.
- apply는 원자적 파일 교체와 실패 시 best-effort restore를 사용해 파일을 업데이트합니다.
레거시 auth 호환성 참고 사항
static credential의 경우 런타임은 더 이상 평문 레거시 auth 저장소에 의존하지 않습니다.- 런타임 자격 증명 소스는 해석된 인메모리 스냅샷입니다.
- 레거시 static
api_key항목은 발견되면 정리됩니다. - OAuth 관련 호환성 동작은 별도로 유지됩니다.
Web UI 참고
일부 SecretInput union은 form mode보다 raw editor mode에서 구성하기가 더 쉽습니다.관련 항목
- 인증 — auth 설정
- CLI: secrets — CLI 명령
- 환경 변수 — 환경 우선순위
- SecretRef 자격 증명 표면 — 자격 증명 표면
- Secrets Apply Plan Contract — 계획 계약 세부 정보
- 보안 — 보안 태세