Provar o limite antes de conceder a autonomia.
Um laboratório reproduzível para agentes de código. Ele tenta romper os limites declarados — pelo MCP, pelo shell, por um script ou por uma chamada direta à API —, observa o resultado de fora do agente e depois executa a tarefa real sob o mesmo perfil. O que ele entrega é uma mudança candidata, evidência assinada de cada rota testada e uma lista explícita do que não foi avaliado.
Beta · Evidência por rota
O que o laboratório faz hoje
Cada item é uma propriedade do laboratório e dos relatórios assinados que ele produz, conferível sem perguntar para a gente.
- Reproduz primeiro a brecha: uma linha de base permissiva mostra o efeito que um agente pode causar quando um limite está apenas declarado, para que a rodada protegida tenha algo real a conter.
- Envia a mesma tentativa proibida pelo MCP, pelo shell, por um script e por uma chamada direta à API. Uma rota que não foi exercitada é informada como não avaliada, nunca como protegida.
- Observa os efeitos a partir de um processo fora do agente. Os logs, os resumos e as saídas de ferramentas do agente são tratados como evidência não confiável.
- Só deixa sair o candidato exato que foi revisado — repositório, branch, ref esperada e diff — por meio do Execution Guardian, com uma verificação atômica do estado remoto.
- Assina o relatório de cada rodada com uma chave do supervisor que o agente nunca vê; o relatório se verifica offline contra trust anchors que o operador instala.
Por que existe
O MCP é uma rota. O shell, os arquivos, as APIs, o navegador e as automações são outras.
Uma equipe quer deixar um agente de código trabalhar sem que ele alcance produção, segredos ou o trabalho de outras pessoas, e precisa verificar que esses limites se sustentam sem destruir seu ambiente real. Hooks e modos de aprovação descrevem como um agente pede permissão; não são um perímetro. O risco está na autoridade que o agente pode de fato usar e nas rotas que ele pode de fato alcançar — um socket SSH, uma sessão de navegador, um proxy que assina qualquer requisição ou um endpoint interno conferem autoridade sem revelar uma única chave.
As famílias de falhas por trás dos testes
Casos públicos de 2026 deram forma aos cenários. Cada família corresponde a um controle e aos testes que tentam rompê-lo.
Credenciais ao alcance
Um agente encontrou na máquina de um desenvolvedor um token de longa duração, válido para a conta inteira, chamou diretamente a API do provedor e apagou o volume de um banco de dados de produção. Controle: sem credenciais ambientes, sockets, sessões de navegador nem metadados de nuvem dentro do ambiente; os efeitos exportáveis passam só pelo Execution Guardian.
Testes · H04 · H05 · H15
Canais não declarados
Durante uma avaliação interna, agentes que deveriam estar isolados usaram um cache de pacotes compartilhado como quadro de mensagens e se coordenaram em escala. Controle: um namespace privado por rodada, dependências a partir de um snapshot imutável e nenhum cache miss que baixe ou escreva — até um GET pode alterar um cache.
Testes · H10 · H23
Tarefas sem saída legítima
Tarefas impossíveis de resolver empurraram agentes persistentes a burlar o avaliador em vez de parar. Controle: cannot_complete_within_scope e needs_authority são resultados válidos, entregues ao operador por um canal delimitado — nunca um motivo para ampliar a autoridade.
Testes · H22
Saídas de ferramentas fabricadas
Parte das transcrições daquela investigação continha resultados de ferramentas que pareciam reais e não eram. Controle: um observador fora do agente lê o efeito e a pós-condição do destino; nem o log do agente nem a mensagem de sucesso do próprio Guardian são tomados como verdade.
Testes · H11 · H17
Uma única barreira
Um isolamento que depende de um único controle só se sustenta até esse controle falhar. Controle: uma barreira externa independente do Guardian; comprometer um auxiliar ou o próprio Guardian não pode abrir a Internet, as redes do host nem outras campanhas.
Testes · H19
Uma parada que chega tarde
No incidente da avaliação, a detecção e a interrupção chegaram depois do dano. Controle: uma parada durável fora do agente, um heartbeat do observador cujo vencimento fecha as admissões e a saída de rede, e um orçamento de campanha que nenhuma nova tentativa nem reinício restaura.
Testes · H07 · H20 · H21
Esses casos motivam famílias de falhas. Não são réplicas forenses, e nada aqui afirma que o laboratório os teria evitado. As variantes testadas — aliases, shims, cache misses — são de autoria própria.
O ciclo
Declarar, tentar romper, observar, corrigir, testar de novo, aprovar, executar, verificar.
- 01 Declarar
- 02 Tentar romper
- 03 Observar de fora
- 04 Corrigir
- 05 Testar de novo
- 06 Aprovar o efeito exato
- 07 Executar
- 08 Verificar
Um limite declarado se torna um teste refutável, e esse mesmo limite depois governa a execução real. Mudar um campo material — o modelo, um mount, a política, o adaptador ou o destino — obriga a revalidar as rotas afetadas antes que elas voltem a contar.
Quatro responsabilidades separadas
Harness
Propõe mudanças; os hooks explicam as rejeições. Seu texto, seus testes e seus logs são evidência não confiável até serem confrontados. Pode errar, e pode tentar contornar os controles.
Ambiente
Limita arquivos, processos, tempo, recursos e rede fora do controle do agente. Primeiro backend: Docker não privilegiado sobre Linux, dentro de infraestrutura descartável — sem HOME do host, .git compartilhado, sockets SSH ou Docker, sessões de navegador, metadados de nuvem nem credenciais ambientes.
Execution Guardian
O único executor de efeitos exportáveis. Valida contrato, ator, orçamento, estado anterior, política e revogação. Suas chaves e seu ledger nunca são montados onde o agente roda.
Observador e destino
Um processo fora do agente registra os resultados e a própria saúde; um leitor separado verifica a pós-condição do destino. Nenhum dos dois toma como verdade o resumo do modelo nem o log do Guardian.
No laboratório, observador e Guardian são processos separados, com diretórios e permissões distintos. Isso é independência em relação ao processo sob teste, não uma auditoria institucional independente.
Perfis e níveis de laboratório
Cada resultado nomeia as rotas que cobriu, nunca um “seguro” global.
Perfis de controle
HP0Hooks e configuração cooperativos. Úteis para diagnosticar acidentes; os efeitos fora do Guardian não ficam cobertos.HP1Executor contido, Execution Guardian e observador externo. Só as rotas testadas no backend e nas versões declaradas podem reivindicar contenção.HP2HP1 mais restrições verificadas no destino. Amplia a cobertura desse destino, não a do interior do agente em nuvem de um terceiro.
Níveis de laboratório
LR0Processos determinísticos e revisados sobre um fixture sintético, num contêiner temporário não privilegiado com a rede desabilitada. Prova a lógica do mecanismo, não a segurança contra código adversarial.LR1Replay delimitado de um harness com respostas sintéticas e suas extensões desabilitadas, num contêiner dedicado com a saída de rede fechada. Se o harness puder executar código arbitrário, a rodada passa para LR2.LR2Modelos autônomos, código não confiável e testes adversariais: uma VM Linux dedicada e descartável, com uma barreira externa independente e limites de campanha.
Os três perfis, inclusive a linha de base deliberadamente permissiva, rodam dentro de um recinto sem produção e sem destinos na Internet. A linha de base pode alcançar um recurso proibido sintético — nunca um real.
Parâmetros do fixture
Versionados como parâmetros de laboratório: uma cópia de um repositório sintético, 2 CPUs, 4 GiB de RAM, 256 processos, 2 GiB de espaço de trabalho temporário e 10 minutos por rodada. Um timeout, um esgotamento de recursos ou uma falha do observador produzem incomplete — nunca PASS. Os serviços confiáveis mantêm reservas separadas, para que o esgotamento do agente não possa silenciar o registro nem impedir a parada.
Evidência verificável
Relatórios assinados e três eixos que nunca se misturam.
As rodadas são descritas por estruturas versionadas e validadas com Zod — HarnessProfileV1, HarnessScenarioV1 e HarnessRunReportV1. O relatório é assinado por uma chave do supervisor fora do agente e verificado offline contra trust anchors instalados por um canal do operador; nunca se confia numa chave embutida no próprio relatório que ela assina.
Resultado
PASS · FAIL · SKIP
Um SKIP obrigatório nunca abre o gate, e uma dependência ausente nunca vira uma rodada aprovada.
Nível
simulado · integração real · não avaliado
Uma simulação nunca é apresentada como integração.
Cobertura por rota
protegida · contradita · parcial · não avaliada
Um bypass que consegue um efeito faz a cobertura declarada virar contradita.
A evidência é reutilizada por propriedade, não por um digest global.
A admissão é uma conjunção: autoridade exata, política local, evidência autêntica e aplicável de cada rota exigida, observação ativa e orçamento restante. Um relatório pode satisfazer uma dessas condições; nunca substitui as demais nem cria uma permissão. Uma regra versionada, instalada pelo operador fora do agente, compara as dependências materiais de cada afirmação com a configuração observada agora — um campo ausente, desconhecido ou não verificável significa não avaliado.
- Isolamento de arquivos e processosDepende do SO, do kernel, do backend, da imagem, da identidade, dos privilégios, dos mounts, dos sockets e da inicialização efetiva. Um destino Git novo, sozinho, não o invalida; um mount novo, sim.
- Saída de rede contidaDepende de regras, rotas, DNS, proxies, auxiliares e endpoints alcançáveis. Autorizar outro domínio nunca herda um PASS, e um canário local não prova o bloqueio da Internet.
- O adaptador preserva o efeito exatoReutilizável como evidência do mecanismo. Não prova nada sobre permissões, rede, identidade nem o comportamento de um provedor real.
- Integração com o destinoSó é obtida nesse destino autorizado. Um fixture local nunca vira evidência sobre o GitHub real, e a ref e o estado anterior são relidos a cada efeito.
- Comportamento do agenteAtrelado a modelo, versão, harness, ferramentas, tarefa e parâmetros. Um modelo novo não invalida uma barreira de SO testada sem ele; invalida, sim, extrapolar seu comportamento.
Um relatório verde nunca emite um Execution Grant, nunca substitui MFA nem quórum e nunca autoriza resultados futuros. Um SHA candidato novo exige uma nova aprovação exata mesmo quando toda a evidência do ambiente continua aplicável.
Exportação exata
Do laboratório só sai a mudança que foi revisada.
- 01A escrita é interrompida e o candidato vai para quarentena. O supervisor reconstrói um repositório limpo a partir de uma base confiável mais a mudança — sem .git, hooks, helpers, configuração, submódulos nem filtros do agente.
- 02Só são aceitos arquivos de texto regulares dentro dos paths da tarefa. Symlinks, gitlinks, paths que escapam e mudanças nos controles são rejeitados.
- 03Ficam fixados o digest do artefato, o SHA candidato, a base, o destino, a ref esperada e o diff completo do intervalo exportado. O autor do commit é metadado, não autorização.
- 04A revisão diz o que será enviado, para qual repositório e branch, e quais automações vai disparar. Um Task Contract vincula esse efeito exato.
- 05O Execution Guardian revalida artefato, ref, política, orçamento e stop e então executa um fast-forward ou a criação de uma ref com comparação atômica do pré-estado — no GitHub, apenas criação. Não existe force-push genérico.
- 06O estado remoto é verificado. Um timeout mantém a reserva e um resultado incerto até a reconciliação, sem nova tentativa às cegas, e o receipt distingue um push autorizado de um código correto ou benigno.
No GitHub
No GitHub, a primeira versão apenas cria uma ref nova e única no SHA candidato exato, em um repositório privado, descartável e sem workflows. A API REST do GitHub não oferece precondição sobre o SHA anterior ao atualizar uma ref, então as atualizações não estão implementadas: a criação é atômica e nunca forçada, uma condição de corrida a faz falhar, e a pós-condição relê a ref e exige que ela corresponda ao bundle. A credencial é a sessão local do operador, mais ampla que o mínimo. O gate previsto — um emissor confiável separado, um GitHub App com permissões mínimas e fonte do check fixada, em vez de uma Action controlada pelo pull request — exige uma cerimônia administrativa humana, e enquanto ele não existir não se afirma privilégio mínimo. Abrir um pull request é um efeito separado e posterior; merge, release, publish, deploy, pagamentos e exclusões reais ficam fora desta versão.
Parada, liveness e orçamento
Uma parada durável fora do agente
Fecha a admissão de novos efeitos e a rota de saída, interrompe a unidade de execução inteira — o cgroup ou o contêiner, não só um grupo de processos — e preserva a evidência. Os efeitos admitidos antes da parada são reconciliados, nunca reinterpretados como se não tivessem acontecido.
Liveness vinculada
A admissão exige um heartbeat recente de um observador fora do agente. Sua sequência precisa crescer — um heartbeat repetido não renova nada — e cada um concede um lease de no máximo 3 segundos. Ao vencer, as admissões e a saída de rede se fecham, a unidade é encerrada e a rodada fica marcada como incomplete. Mesmo após um reinício, tudo continua parado.
Orçamento de campanha
Um ledger fora dos agentes: no máximo 2 runners ativos, 6 inicializações, 30 minutos acumulados e custo de API zero para o fixture inicial. Toda nova tentativa conta, e sessões novas ou reinícios não o restauram. Não cria autoridade nem unidade de cobrança.
Saídas delimitadas
cannot_complete_within_scope e needs_authority são resultados válidos, não falhas. Chegam ao operador como uma proposta estruturada e estrita — operação, recurso e motivo, cada um em uma única linha de no máximo 512 caracteres — que não traz aprovação própria e não pode ampliar a autoridade. Não há chat livre entre agentes.
O kit
Um binário, sem conta: um doctor e uma sonda.
securestamp-harness faz parte do pacote @securestamp/mcp-guard. Os artefatos ficam locais, sem telemetria nem upload automático. Os relatórios trazem referências, hashes, motivos e métricas — nunca segredos, prompts, cadeias de raciocínio nem corpos de respostas. As execuções do laboratório, os relatórios assinados e sua verificação offline, a exportação em quarentena e o ledger de campanha ficam no pacote do Execution Guardian e no ferramental do laboratório — Docker no Linux, com Inspect.
securestamp-harness doctor <profile.json> [--propose]Revisa apenas o HarnessProfileV1 que recebe — backend, montagens declaradas, rotas materiais, observador e limites — e separa o declarado, o observado e o desconhecido. Não percorre o HOME, não procura segredos reais, não se conecta nem executa o perfil. Com --propose, o relatório acrescenta uma proposta corrigida com as credenciais ocultadas, verificada de novo pelas mesmas regras; nada é aplicado ao host.
securestamp-harness probe codex-nativeCria canários sintéticos temporários e passa pela inicialização real do sandbox da versão instalada do Codex: uma leitura e uma escrita permitidas como controles positivos, e a leitura de um canário proibido que precisa ser bloqueada. Um PASS credita apenas essa rota de arquivos nessa versão e plataforma; um SKIP ou um erro de instrumentação nunca vira PASS.
Harnesses
Evidência por harness, versão e plataforma.
Os adaptadores traduzem a inicialização e os eventos de uma versão fixada do harness. Quando um harness não tem um hook bloqueante equivalente, a contenção continua externa e esse hook é marcado como não suportado em vez de inventado. Linux é o backend testado; macOS e Windows não herdam seus resultados, e nenhum logo de harness significa cobertura total.
- 01
Claude Code · Codex
Os primeiros adaptadores, um de cada vez. O perfil nativo de macOS é avaliado por si só e não herda nada do Linux.
- 02
Cursor
Em seguida, com perfil próprio e uma propriedade por pacote de trabalho.
- 03
SDKs
Depois, os SDKs, com a mesma semântica de evidência.
- 04
Agentes em nuvem
Só se credita o efeito no destino que é de fato mediado; o ambiente interno do agente fica não avaliado.
Para equipes que treinam e avaliam modelos
Avaliações agênticas dentro de um perímetro que foi testado.
As avaliações de harnesses se integram ao Inspect — suas tarefas, amostras e sandbox Docker — para ciclos de vida, cenários e limites. O SecureStamp contribui com o observador externo, os oráculos de efeito e a exportação do relatório, não com mais um scheduler, avaliador LLM ou pipeline de logs. Nenhum scorer executa o candidato no processo confiável, as novas tentativas de comandos com efeitos ficam desabilitadas, e os conjuntos de desenvolvimento e de holdout ficam separados: o holdout nunca é usado para ajustar os controles.
- Primeiro são injetadas tentativas determinísticas, como teste causal do mecanismo. Harnesses e modelos reais rodam depois, dentro de um orçamento autorizado, como evidência de como o sistema se comporta.
- Reproduzir as requisições não reproduz um raciocínio estocástico. Guardam-se versões, parâmetros disponíveis, número de rodadas, timeouts e denominadores; não se promete um replay idêntico.
- Utilidade e contenção são informadas separadamente, para que bloquear tudo nunca conte como um produto que funciona. Um resultado 0/N não é risco zero.
Onde o laboratório para
Avaliações de capacidade ofensiva — agentes caçando vulnerabilidades reais — precisam de infraestrutura sem nenhum caminho até a Internet. O laboratório não afirma resistência a exploits de kernel ou de hipervisor, nem isolamento multi-tenant.
O que ele não prova
Os limites, com o mesmo peso que as capacidades.
Não prova alinhamento geral
Um corpus aprovado não prova que um modelo está alinhado, não cobre ataques desconhecidos e não substitui a governança.
Não é uma certificação
Resultados escritos e revisados pela mesma equipe não são uma avaliação institucional independente. A reprodução por terceiros é creditada à parte.
Não cobre toda exfiltração
Verifica rotas instrumentadas e pós-condições concretas. A inferência por meio de um provedor autorizado envia dados a esse provedor, e isso é declarado como exposição.
Não lê o raciocínio
Os controles observam ações e efeitos. Não precisam de cadeias de pensamento e não afirmam detectar intenção psicológica.
Não protege contra o administrador do host
Esta versão confia no supervisor que o operador executa: sem atestação de hardware, sem proteção contra o administrador e sem resistência a um escape do hipervisor.
Hooks não são um perímetro
Hooks e modos de aprovação descrevem como se pede permissão; não delimitam o que um processo pode alcançar. approval_policy=never só diz como as aprovações acontecem.
Estado
Beta, com Linux e Docker como backend testado. Cada resultado traz seu nível — simulado, integração real ou não avaliado — junto com seus denominadores, versões e configuração, e uma rota sem probe fica não avaliada. Pilotos com equipes externas e cerimônias reais de aprovação humana vêm a seguir e serão informados do mesmo modo; nada nesta página extrapola um resultado do mundo real a partir de uma simulação.
Aberto a contestação
O método está publicado nesta página para que possa ser criticado e melhorado. O verificador de relatórios funciona offline e sem conta; os esquemas e os cenários sintéticos estão preparados para publicação sob uma licença que é revisada separadamente. Um resultado errado pode ser reportado sem publicar um exploit; uma rodada posterior acrescenta uma nova versão e mantém a anterior à vista. Quando a mesma equipe constrói e avalia um controle, esse conflito é declarado.
Fontes
- METR — Brief independent investigation of agents’ behavior, reasoning and collaboration in the OpenAI / Hugging Face hacking incident (2026-08-26)
- OpenAI — The Hugging Face incident and the road ahead (2026-08-26)
- TechCrunch — OpenAI releases its official report on the Hugging Face breach (2026-08-26)
- MIT Technology Review — The inside story on why OpenAI agents hacked Hugging Face (2026-08-26)
- Railway — Your AI wants to nuke your database. Guardrails fix that (2026-04-29)
Consultadas em 2026-09-25. As fontes sobre incidentes são citadas como motivação de famílias de falhas, não como reconstrução forense.