Texto simples ainda funciona. SecretRefs são opcionais por credencial.
Objetivos e modelo de runtime
Segredos são resolvidos em um snapshot de runtime em memória.- A resolução é ansiosa durante a ativação, não preguiçosa em caminhos de requisição.
- A inicialização falha rapidamente quando um SecretRef efetivamente ativo não pode ser resolvido.
- O recarregamento usa troca atômica: sucesso total, ou mantém o último snapshot comprovadamente bom.
- Violações da política de SecretRef (por exemplo, perfis de autenticação em modo OAuth combinados com entrada SecretRef) falham a ativação antes da troca de runtime.
- Requisições de runtime leem apenas do snapshot ativo em memória.
- Depois da primeira ativação/carga de configuração bem-sucedida, os caminhos de código de runtime continuam lendo esse snapshot ativo em memória até que um recarregamento bem-sucedido o substitua.
- Caminhos de entrega de saída também leem desse snapshot ativo (por exemplo, entrega de resposta/thread do Discord e envios de ações do Telegram); eles não resolvem SecretRefs novamente a cada envio.
Limite de acesso do agente
SecretRefs protegem credenciais contra persistência em configuração compatível e superfícies de modelo geradas, mas não são um limite de isolamento de processo. Se uma credencial em texto simples permanecer em disco em um caminho que o agente possa ler, o agente poderá contornar a redação em nível de API usando ferramentas de arquivo ou shell para inspecionar esse arquivo. Para implantações de produção em que arquivos acessíveis pelo agente estejam no escopo, trate a migração para SecretRef como concluída somente quando tudo isto for verdadeiro:- credenciais compatíveis usam SecretRefs em vez de valores em texto simples
- resíduos legados em texto simples foram removidos de
openclaw.json,auth-profiles.json,.enve arquivosmodels.jsongerados openclaw secrets audit --checkestá limpo após a migração- quaisquer credenciais restantes sem suporte ou rotativas estão protegidas por isolamento do sistema operacional, isolamento de contêiner ou um proxy externo de credenciais
Filtragem de superfície ativa
SecretRefs são validados apenas em superfícies efetivamente ativas.- Superfícies habilitadas: refs não resolvidas bloqueiam inicialização/recarregamento.
- Superfícies inativas: refs não resolvidas não bloqueiam inicialização/recarregamento.
- Refs inativas emitem diagnósticos não fatais com o código
SECRETS_REF_IGNORED_INACTIVE_SURFACE.
Exemplos de superfícies inativas
Exemplos de superfícies inativas
- Entradas de canal/conta desabilitadas.
- Credenciais de canal de nível superior que nenhuma conta habilitada herda.
- Superfícies de ferramenta/recurso desabilitadas.
- Chaves específicas de provedor de busca na web que não são selecionadas por
tools.web.search.provider. No modo automático (provedor não definido), as chaves são consultadas por precedência para autodetecção de provedor até que uma seja resolvida. Após a seleção, chaves de provedores não selecionados são tratadas como inativas até serem selecionadas. - Material de autenticação SSH do sandbox (
agents.defaults.sandbox.ssh.identityData,certificateData,knownHostsData, além de substituições por agente) fica ativo somente quando o backend efetivo do sandbox ésshpara o agente padrão ou um agente habilitado. - SecretRefs de
gateway.remote.token/gateway.remote.passwordficam ativos se uma destas condições for verdadeira:gateway.mode=remotegateway.remote.urlestá configuradogateway.tailscale.modeéserveoufunnel- Em modo local sem essas superfícies remotas:
gateway.remote.tokenfica ativo quando a autenticação por token pode vencer e nenhum token de env/auth está configurado.gateway.remote.passwordfica ativo somente quando a autenticação por senha pode vencer e nenhuma senha de env/auth está configurada.
- O SecretRef de
gateway.auth.tokenfica inativo para resolução de autenticação na inicialização quandoOPENCLAW_GATEWAY_TOKENestá definido, porque a entrada de token por env vence para esse runtime.
Diagnósticos da superfície de autenticação do Gateway
Quando um SecretRef é configurado emgateway.auth.token, gateway.auth.password, gateway.remote.token ou gateway.remote.password, a inicialização/recarregamento do Gateway registra explicitamente o estado da superfície:
active: o SecretRef faz parte da superfície de autenticação efetiva e deve ser resolvido.inactive: o SecretRef é ignorado para este runtime porque outra superfície de autenticação vence, ou porque a autenticação remota está desabilitada/não ativa.
SECRETS_GATEWAY_AUTH_SURFACE e incluem o motivo usado pela política de superfície ativa, para que você possa ver por que uma credencial foi tratada como ativa ou inativa.
Pré-validação de referência no onboarding
Quando o onboarding é executado em modo interativo e você escolhe armazenamento SecretRef, o OpenClaw executa validação prévia antes de salvar:- Refs de env: valida o nome da variável de env e confirma que um valor não vazio está visível durante a configuração.
- Refs de provedor (
fileouexec): valida a seleção do provedor, resolveide verifica o tipo do valor resolvido. - Caminho de reutilização do quickstart: quando
gateway.auth.tokenjá é um SecretRef, o onboarding o resolve antes do bootstrap de probe/dashboard (para refsenv,fileeexec) usando o mesmo gate de falha rápida.
Contrato de SecretRef
Use um formato de objeto em todos os lugares:- env
- file
- exec
providerdeve corresponder a^[a-z][a-z0-9_-]{0,63}$iddeve corresponder a^[A-Z][A-Z0-9_]{0,127}$
Configuração de provedor
Defina provedores emsecrets.providers:
Provedor env
Provedor env
- Allowlist opcional via
allowlist. - Valores de env ausentes/vazios falham a resolução.
Provedor file
Provedor file
- Lê o arquivo local de
path. mode: "json"espera um payload de objeto JSON e resolveidcomo ponteiro.mode: "singleValue"espera o id de ref"value"e retorna o conteúdo do arquivo.- O caminho deve passar pelas verificações de propriedade/permissão.
- Observação de falha fechada no Windows: se a verificação de ACL estiver indisponível para um caminho, a resolução falha. Somente para caminhos confiáveis, defina
allowInsecurePath: truenesse provedor para contornar verificações de segurança de caminho.
Provedor exec
Provedor exec
- Executa o caminho absoluto do binário configurado, sem shell.
- Por padrão,
commanddeve apontar para um arquivo regular (não um symlink). - Defina
allowSymlinkCommand: truepara permitir caminhos de comando symlink (por exemplo, shims do Homebrew). O OpenClaw valida o caminho de destino resolvido. - Combine
allowSymlinkCommandcomtrustedDirspara caminhos de gerenciadores de pacotes (por exemplo,["/opt/homebrew"]). - Oferece suporte a timeout, timeout sem saída, limites de bytes de saída, allowlist de env e diretórios confiáveis.
- Observação de falha fechada no Windows: se a verificação de ACL estiver indisponível para o caminho do comando, a resolução falha. Somente para caminhos confiáveis, defina
allowInsecurePath: truenesse provedor para contornar verificações de segurança de caminho. - Provedores exec gerenciados por Plugin podem usar
pluginIntegrationem vez decommand/argscopiados. O OpenClaw resolve os detalhes do comando atual a partir do manifesto do Plugin instalado durante a inicialização/recarregamento. Se o Plugin estiver desabilitado, removido, não confiável ou não declarar mais a integração, SecretRefs ativos que usam esse provedor falham fechados.
Chaves de API baseadas em arquivo
Não coloque stringsfile:... no bloco env da configuração. O bloco env é
literal e não substitutivo, então file:... não é resolvido.
Use um SecretRef de arquivo em um campo de credencial compatível:
mode: "singleValue", o id do SecretRef é "value". Para
mode: "json", use um ponteiro JSON absoluto como
"/providers/xai/apiKey".
Consulte Superfície de credenciais SecretRef para
os campos de configuração que aceitam SecretRefs.
Exemplos de integração exec
1Password CLI
1Password CLI
Bitwarden Secrets Manager (`bws`)
Bitwarden Secrets Manager (`bws`)
Use um wrapper de resolução quando quiser que os ids de SecretRef sejam mapeados para chaves de item do Bitwarden
Secrets Manager. O repositório inclui
O resolvedor agrupa os ids solicitados, executa
scripts/secrets/openclaw-bws-resolver.mjs; instale-o ou copie-o para um caminho absoluto
confiável no host que executa o Gateway.Requisitos:- CLI do Bitwarden Secrets Manager (
bws) instalado no host do Gateway. BWS_ACCESS_TOKENdisponível para o serviço Gateway.PATHpassado para o resolvedor, ouBWS_BINdefinido como o caminho absoluto do bináriobws.BWS_SERVER_URLdeve ser definido no ambiente ao usar uma instância auto-hospedada do Bitwarden.
bws secret list e retorna
valores para campos key de segredos correspondentes. Use chaves que satisfaçam o contrato de id
SecretRef de exec, como openclaw/providers/openai/apiKey; chaves no
estilo de variáveis de ambiente com sublinhados são rejeitadas antes da execução do resolvedor. Se mais
de um segredo visível do Bitwarden tiver a mesma chave solicitada, o resolvedor
falhará esse id como ambíguo em vez de escolher um. Depois de atualizar a configuração,
verifique o caminho do resolvedor:HashiCorp Vault CLI
HashiCorp Vault CLI
password-store (`pass`)
password-store (`pass`)
Use um pequeno wrapper de resolução quando quiser que ids de SecretRef sejam mapeados diretamente para
entradas Em seguida, configure o provedor exec e aponte Mantenha o segredo na primeira linha da entrada
pass. Salve-o como executável em um caminho absoluto que passe
nas verificações de caminho do seu provedor exec, por exemplo
/usr/local/bin/openclaw-pass-resolver. O shebang #!/usr/bin/env node
resolve node a partir do PATH do processo do resolvedor, então inclua PATH em
passEnv. Se pass não estiver nesse PATH, defina PASS_BIN no ambiente
pai e também o inclua em passEnv:apiKey para o caminho da entrada
pass:pass, ou personalize o
wrapper se quiser retornar a saída completa de pass show. Depois de
atualizar a configuração, verifique tanto a auditoria estática quanto o caminho do resolvedor exec:sops
sops
Variáveis de ambiente do servidor MCP
Variáveis de ambiente do servidor MCP configuradas viaplugins.entries.acpx.config.mcpServers oferecem suporte a SecretInput. Isso mantém chaves de API e tokens fora da configuração em texto simples:
${MCP_SERVER_API_KEY} e objetos SecretRef são resolvidos durante a ativação do Gateway antes que o processo do servidor MCP seja iniciado. Como em outras superfícies SecretRef, referências não resolvidas só bloqueiam a ativação quando o Plugin acpx está efetivamente ativo.
Material de autenticação SSH do sandbox
O backend de sandboxssh do núcleo também oferece suporte a SecretRefs para material de autenticação SSH:
- O OpenClaw resolve essas refs durante a ativação do sandbox, não preguiçosamente durante cada chamada SSH.
- Valores resolvidos são gravados em arquivos temporários com permissões restritivas e usados na configuração SSH gerada.
- Se o backend de sandbox efetivo não for
ssh, essas refs permanecem inativas e não bloqueiam a inicialização.
Superfície de credenciais compatível
Credenciais canônicas compatíveis e incompatíveis são listadas em:Credenciais emitidas em tempo de execução ou rotativas e material de atualização OAuth são intencionalmente excluídos da resolução SecretRef somente leitura.
Comportamento obrigatório e precedência
- Campo sem uma ref: inalterado.
- Campo com uma ref: obrigatório em superfícies ativas durante a ativação.
- Se tanto texto simples quanto ref estiverem presentes, ref tem precedência nos caminhos de precedência compatíveis.
- O sentinela de redação
__OPENCLAW_REDACTED__é reservado para redação/restauração interna de configuração e é rejeitado como dados literais de configuração enviados.
SECRETS_REF_OVERRIDES_PLAINTEXT(aviso em tempo de execução)REF_SHADOWED(constatação de auditoria quando credenciais deauth-profiles.jsontêm precedência sobre refs deopenclaw.json)
serviceAccountReftem precedência sobreserviceAccountem texto simples.- O valor em texto simples é ignorado quando a ref irmã está definida.
Acionadores de ativação
A ativação de segredos é executada em:- Inicialização (preflight mais ativação final)
- Caminho de aplicação a quente de recarregamento de configuração
- Caminho de verificação de reinicialização de recarregamento de configuração
- Recarregamento manual via
secrets.reload - Preflight de RPC de gravação de configuração do Gateway (
config.set/config.apply/config.patch) para resolubilidade de SecretRef em superfície ativa dentro do payload de configuração enviado antes de persistir edições
- Sucesso troca o snapshot atomicamente.
- Falha na inicialização aborta a inicialização do Gateway.
- Falha no recarregamento em tempo de execução mantém o último snapshot sabidamente válido.
- Falha no preflight de RPC de gravação rejeita a configuração enviada e mantém tanto a configuração em disco quanto o snapshot de runtime ativo inalterados.
- Fornecer um token de canal explícito por chamada para uma chamada de helper/ferramenta de saída não aciona a ativação de SecretRef; os pontos de ativação permanecem inicialização, recarregamento e
secrets.reloadexplícito.
Sinais degradados e recuperados
Quando a ativação em tempo de recarregamento falha após um estado íntegro, o OpenClaw entra em estado de segredos degradado. Evento único do sistema e códigos de log:SECRETS_RELOADER_DEGRADEDSECRETS_RELOADER_RECOVERED
- Degradado: o runtime mantém o último snapshot sabidamente válido.
- Recuperado: emitido uma vez após a próxima ativação bem-sucedida.
- Falhas repetidas enquanto já degradado registram avisos, mas não geram eventos em excesso.
- Falha rápida na inicialização não emite eventos degradados porque o runtime nunca se tornou ativo.
Resolução de caminho de comando
Caminhos de comando podem optar pela resolução SecretRef compatível via RPC de snapshot do Gateway. Há dois comportamentos gerais:- Caminhos de comando estritos
- Caminhos de comando somente leitura
Por exemplo, caminhos de memória remota de
openclaw memory e openclaw qr --remote quando ele precisa de refs de segredo compartilhado remoto. Eles leem a partir do snapshot ativo e falham rapidamente quando uma SecretRef obrigatória está indisponível.- A atualização do snapshot após a rotação de segredo no backend é tratada por
openclaw secrets reload. - Método RPC do Gateway usado por estes caminhos de comando:
secrets.resolve.
Fluxo de trabalho de auditoria e configuração
Fluxo padrão do operador: Não trate a migração como concluída até que a nova auditoria esteja limpa. Se a auditoria ainda relatar valores em texto claro em repouso, o risco de acesso por agentes ainda estará presente mesmo quando as APIs de runtime retornarem valores redigidos. Se você salvar um plano em vez de aplicar duranteconfigure, aplique esse plano salvo
com openclaw secrets apply --from <plan-path> antes da nova auditoria.
secrets audit
secrets audit
As descobertas incluem:
- valores em texto claro em repouso (
openclaw.json,auth-profiles.json,.enveagents/*/agent/models.jsongerado) - resíduos de cabeçalho sensível de provedor em texto claro em entradas geradas de
models.json - refs não resolvidas
- sombreamento de precedência (
auth-profiles.jsontendo prioridade sobre refs deopenclaw.json) - resíduos legados (
auth.json, lembretes de OAuth)
- Por padrão, a auditoria ignora verificações de resolução de SecretRef exec para evitar efeitos colaterais de comando.
- Use
openclaw secrets audit --allow-execpara executar provedores exec durante a auditoria.
- A detecção de cabeçalhos sensíveis de provedor é baseada em heurística de nomes (nomes e fragmentos comuns de cabeçalhos de autenticação/credenciais, como
authorization,x-api-key,token,secret,passwordecredential).
secrets configure
secrets configure
Auxiliar interativo que:
- configura primeiro
secrets.providers(env/file/exec, adicionar/editar/remover) - permite selecionar campos compatíveis que contêm segredos em
openclaw.jsonmaisauth-profiles.jsonpara um escopo de agente - pode criar um novo mapeamento de
auth-profiles.jsondiretamente no seletor de destino - captura detalhes da SecretRef (
source,provider,id) - executa resolução de preflight
- pode aplicar imediatamente
- O preflight ignora verificações de SecretRef exec a menos que
--allow-execesteja definido. - Se você aplicar diretamente a partir de
configure --applye o plano incluir refs/provedores exec, mantenha--allow-execdefinido também para a etapa de aplicação.
openclaw secrets configure --providers-onlyopenclaw secrets configure --skip-provider-setupopenclaw secrets configure --agent <id>
configure:- limpar credenciais estáticas correspondentes de
auth-profiles.jsonpara provedores direcionados - limpar entradas estáticas legadas de
api_keydeauth.json - limpar linhas conhecidas de segredo correspondentes de
<config-dir>/.env
secrets apply
secrets apply
Aplicar um plano salvo:Observação sobre exec:
- dry-run ignora verificações de exec a menos que
--allow-execesteja definido. - o modo de gravação rejeita planos contendo SecretRefs/provedores exec a menos que
--allow-execesteja definido.
Política de segurança unidirecional
Modelo de segurança:- o preflight deve ser bem-sucedido antes do modo de gravação
- a ativação do runtime é validada antes do commit
- a aplicação atualiza arquivos usando substituição atômica de arquivo e restauração de melhor esforço em caso de falha
Observações de compatibilidade de autenticação legada
Para credenciais estáticas, o runtime não depende mais do armazenamento legado de autenticação em texto claro.- A origem das credenciais de runtime é o snapshot resolvido em memória.
- Entradas estáticas legadas de
api_keysão limpas quando descobertas. - O comportamento de compatibilidade relacionado a OAuth permanece separado.
Observação sobre a Web UI
Algumas uniões de SecretInput são mais fáceis de configurar no modo de editor bruto do que no modo de formulário.Relacionado
- Autenticação — configuração de autenticação
- CLI: secrets — comandos da CLI
- Variáveis de ambiente — precedência de ambiente
- Superfície de credenciais SecretRef — superfície de credenciais
- Contrato de plano do Secrets Apply — detalhes do contrato do plano
- Segurança — postura de segurança