Security Blog

A indústria acabou de concordar que o seu agente não devia ver as suas chaves. E está a escondê-las no sítio errado.

#235

October 2, 2026 · By Marketing team

← All posts

Em uma semana, o Claude Code, o Hermes e o Codex lançaram correções para impedir que agentes vejam credenciais em bruto. Correções convergentes não são uma arquitetura: as chaves não devem estar sequer no harness.

Esta semana a Anthropic incluiu uma linha discreta no changelog do Claude Code: "Corrigido servidores MCP que exigem autenticação a expor ferramentas auth-stub ao modelo em modo headless/SDK" [1]. Em linguagem simples — quando o Claude Code corria em modo headless (como corre em CI e em pipelines de agentes automatizados), ferramentas de autenticação que deviam ficar ocultas estavam a ser expostas ao modelo: a IA conseguia ver os nomes das ferramentas de autenticação, os seus parâmetros e, potencialmente, mexer nelas. No agente de programação mais usado do mundo — 133k stars — a camada de credenciais estava a escorrer para o sítio onde menos a queremos: o próprio contexto do modelo.

Foi corrigido. Mas a correção é a notícia pequena. A notícia grande é porque razão todos os harnesses de agentes a sério estão de repente a travar a mesma batalha.

Três harnesses, uma semana, o mesmo instinto

Veja o que foi lançado numa única janela de 24 horas:

  • Claude Code corrigiu a falha de exposição do auth-stub referida acima e reforçou o controlo de autenticação MCP [1].
  • Hermes (v0.17.0) adicionou "Managed Scope" — segredos fixados pelo administrador e imutáveis para o usuário, bloqueados ao nível do sistema de ficheiros para que o operador de um agente não os consiga substituir — para além de redação de segredos em dumps de debug e do bloqueio de configurações MCP com padrão de exfiltração antes de arrancarem [2].
  • Codex (v0.141.0) envolveu o tráfego de execução remota em canais Noise encriptados e começou a encaminhar plugins consoante o respetivo modo de autenticação [3].

Três concorrentes, três abordagens, uma conclusão partilhada: o harness tem de ser dono dos segredos, e o agente não pode nunca ver as chaves em bruto. Quando concorrentes convergem assim na mesma semana, não é uma moda. É uma categoria a admitir finalmente para que serve.

O problema seguinte é a proliferação de credenciais

Eis o senão. Cada uma daquelas correções vive dentro do harness. E o bug do Claude Code é a pista: quando a autenticação vive no harness, mesmo ao lado do modelo, "o agente não pode nunca vê-la" deixa de ser um facto e passa a ser uma propriedade que tem de continuar a ser engenheirada — e, por vezes, falhar, em modo headless, onde ninguém está a ver. Não se declara uma vez. Defende-se, release após release.

Mas o problema mais profundo não é uma falha isolada — é o que acontece quando cada harness, cada fornecedor e cada caso de uso lança a sua própria resposta. Acaba com um cofre dentro do Claude Code, um cofre dentro do Hermes, um cofre dentro do Codex, um pool de OAuth aqui, um ficheiro de segredos ali — um armazenamento de credenciais separado para cada ferramenta que corre. Isso é proliferação de credenciais, e é o próximo problema, não um problema resolvido.

A proliferação é a falha mesmo quando nenhum dos silos escorre. Os seus segredos são copiados para cada um deles para que funcionem — mais cópias, mais sítios de onde roubar. A rotação tem de acontecer N vezes, à mão, e a que se esquece é a que queima. E ninguém consegue responder à única pergunta que interessa a sério — que agente usou que chave, contra o quê, quando — porque a resposta está espalhada por uma dúzia de armazenamentos que não comunicam entre si. Não se levanta um cofre novo para cada fornecedor e cada fluxo de trabalho. Isso não escala. É a coisa que parte.

As chaves não pertencem de todo ao harness

A correção que nunca tem de ser lançada é aquela em que o agente nunca chega a ter a autenticação. Coloque as credenciais numa única autoridade que se senta fora de todos os harnesses — não um cofre por fornecedor, um por baixo de todos eles. O agente — no Claude Code, no Codex, no Hermes, não importa — pede uma ação nomeada e recebe uma credencial efêmera e com âmbito limitado injetada exatamente para isso, obtida em tempo real e que desaparece depois. Não há auth-stub no contexto do modelo para expor por acidente, porque a autenticação nunca esteve no harness. Não há proliferação, porque há um armazenamento em vez de um por ferramenta — roda uma vez, não N vezes. E cada acesso fica num único registo de auditoria em vez de se espalhar por uma dúzia de silos que não sabem responder a quem-usou-o- quê. (Manter o segredo fora do sítio onde o código corre está quase no topo de as regras que uma ferramenta de credenciais deve seguir — a indústria acabou de passar uma semana a descobri-lo.)

E esta é a parte que é uma fronteira de segurança, não uma conveniência: a credencial não pode viver no mesmo sistema que o agente. Coaloque-os e passam a partilhar um raio de impacto — uma injeção de prompt, um servidor MCP envenenado, um dump de debug partilhado, o próximo bug de auth-stub, e o que quer que chegue ao agente chega às chaves com ele. É por isso que a visibilidade, por si só, já é a violação: no momento em que um segredo aterra nalgum sítio onde o agente o pode ver, trata-o como já vazado e roda-o — da forma como toda a equipa cuidadosa tratou aquele auth-stub do Claude Code no dia em que foi lançado. Mantenha a credencial à distância de braço, num sistema onde o agente só se pode pedir — nunca ler, nunca deter — e um agente totalmente comprometido continua a não conseguir exfiltrar aquilo que nunca esteve ao seu alcance. Pode pedir uma ação. Não pode ir-se embora com a chave. A distância é a defesa; um cofre em processo não a tem a qualquer preço.

É aí que o Clavitor traça a linha. Todo o campo acabou de provar o princípio — o agente não devia ver as chaves. Nós é que não achamos que deva ter de o re-provar dentro de cada harness que corre, nem que a coisa que guarda as suas chaves deva ser a mesma que um atacante acabou de comprometer.

Dê o devido crédito às equipas dos harnesses: segredos fixados pelo administrador, relays encriptados, predefinições fail-closed são engenharia real e boa. Mas uma correção-da-semana para uma falha que continua a reaparecer não é uma arquitetura — é um sintoma. A arquitetura é as chaves não estarem lá para vazar.

Quando três concorrentes reparam a mesma ferida na mesma semana, a ferida é o desenho. O agente não devia ver as suas chaves — por isso pare de as guardar onde ele consegue.

Clavitor (@clavitorai) é o cofre de credenciais construído para agentes de IA, e contra eles. clavitor.ai

Fontes

[1] Claude Code v2.1.183 — "Fixed MCP servers requiring authentication exposing auth-stub tools to the model in headless/SDK mode" — https://github.com/anthropics/claude-code/releases/tag/v2.1.183

[2] Hermes Agent v0.17.0 — Managed Scope (segredos fixados pelo administrador), redação de segredos, bloqueio de configurações de exfiltração — https://github.com/NousResearch/hermes-agent/releases

[3] OpenAI Codex v0.141.0 — canais de relay Noise encriptados, encaminhamento de plugins por modo de autenticação — https://github.com/openai/codex/releases