Como saber o que seu agente de código fez após um prompt injection: Stroq audita e bloqueia a próxima chamada ✅ yoDEV Tested

Para saber o que seu agente de código fez na sua máquina e por quê, você precisa de um registro que conecte cada comando ao que o agente acabava de ler. Stroq é uma CLI open source que mantém esse registro: monitora cada arquivo, página web e resultado de ferramenta que seu agente lê e, quando detecta uma injeção de prompt, bloqueia a próxima chamada arriscada e te diz exatamente de onde veio a ordem.

:white_check_mark: yoDEV Testado · 6 de novembro de 2026
Testamos Stroq 0.30.0 com Node 22 no Linux, executando seu hook de Claude Code diretamente em um projeto de teste. Os resultados que reportamos como nossos saem desse teste.

É contenção de injeção de prompt (prompt injection containment), não apenas um simples log. A maioria das proteções faz uma única pergunta: esse comando é perigoso? Stroq faz uma segunda: o agente foi ordenado executá-lo por algo que acabava de ler? Instala-se com um comando, roda localmente e tem licença Apache-2.0. Nós instalamos e atacamos a nós mesmos; os resultados estão abaixo.

O que é uma injeção de prompt e por que afeta seu agente de código?

Uma injeção de prompt é uma instrução escondida em conteúdo que o modelo lê — uma página web, uma issue, um README, a resposta de um servidor MCP — e que o modelo termina obedecendo como se viesse de você. Em um chat o dano se limita a uma resposta ruim. Em um agente de código que pode executar comandos, ler seu .env e fazer git push, essa mesma instrução pode se tornar uma fuga de credenciais ou um curl | sh contra um servidor alheio.

O padrão clássico tem dois passos: o agente lê algo envenenado e, na sequência, executa o que esse conteúdo pediu. Stroq foi projetado para cortar justo entre esses dois passos.

O que é Stroq e como funciona?

Stroq é uma camada de segurança local que se conecta às chamadas de ferramenta do seu agente. No momento da publicação desta nota, o pacote npm @stroq/cli está na versão 0.30.0, publicada em 5 de novembro de 2026, e requer Node 22 ou superior. Funciona com Claude Code, Cursor, Codex CLI, Copilot CLI, Windsurf e Google Antigravity através de seus hooks nativos, com OpenClaw como plugin e com qualquer cliente MCP através de um proxy stdio.

Atua em dois momentos:

  • Depois que o agente lê algo (PostToolUse): normaliza a saída — remove caracteres de largura zero e homóglifos, decodifica base64, hex e URLs aninhadas — e a compara com seu conjunto de regras. Em nossa instalação, doctor reportou 622 regras carregadas, a maioria tirada do projeto Agent Threat Rules, com licença MIT.
  • Antes que o agente aja (PreToolUse): classifica a ação (rede, shell destrutivo, execução codificada, acesso a secretos, push externo, manipulação de sua própria configuração) e aplica uma política ordenada na qual ganha a primeira regra que coincide.

Cada decisão fica em um log de auditoria encadeado por hash em ~/.stroq/audit.jsonl, com os valores secretos redatados.

Como instalar Stroq no Claude Code?

Da raiz do seu projeto:

npx @stroq/cli init
npx @stroq/cli doctor

Em nosso teste, init escreveu os hooks no .claude/settings.json do projeto (PreToolUse, PostToolUse e PostToolUseFailure). Como npm limpa seu cache de npx, Stroq copia-se para ~/.stroq/cli/<versão>/ e aponta os hooks lá. Quer ver a mudança antes de aplicá-la? Adicione --dry-run. Quer em todos os seus projetos? Adicione --user. Para removê-lo: stroq uninstall.

Se usa Claude Code, também pode instalá-lo como plugin com /plugin marketplace add AGGIB/Stroq e depois /plugin install stroq@stroq. O README avisa que a instalação como plugin não toca .claude/settings.json, então doctor reportará esses hooks como ausentes.

Funciona com Cursor, Codex, Copilot ou servidores MCP?

Sim. Para outros agentes, use --agent:

npx @stroq/cli init --agent cursor
npx @stroq/cli init --agent codex
npx @stroq/cli init --agent copilot
npx @stroq/cli init --agent windsurf
npx @stroq/cli init --agent antigravity
npx @stroq/cli init --agent mcp --client claude-desktop

A última opção envolve seus servidores MCP stdio com um proxy que avalia cada tools/call e escaneia o que retorna. Se a segurança MCP é sua frente principal, essa análise complementa bem: MCP Gateway: a próxima grande categoria de segurança para agentes.

Como Stroq decide o que bloquear?

A chave é de onde veio o conteúdo, e foi o mais útil que aprendemos ao testá-lo.

O conteúdo externo ao seu projeto (uma página web, um resultado de MCP) contamina a sessão. Passamos ao hook um “guia de instalação” baixado que pedia aos assistentes de IA ler o .env e enviá-lo para uma URL externa. A partir desse momento:

Ação depois da página envenenada Decisão de Stroq
curl para um host inofensivo Bloqueado (deny-network-when-tainted)
Ler .env Bloqueado (deny-secrets-when-tainted)
curl com a chave AWS do .env Bloqueado (deny-secret-egress), valor redatado no log
git push para a URL do repo de um atacante Bloqueado (deny-origin-suspect)
ls -la Permitido
git push origin main (seu remoto configurado) Permitido

O conteúdo do seu próprio projeto apenas é marcado. Escondemos um comentário HTML em um README que pedia aos agentes executar curl … | sh e fazer upload de ~/.ssh/id_rsa. Stroq alertou o agente para tratar esse texto como dados não confiáveis, mas não restringiu a sessão: sua própria mensagem diz que é um arquivo do projeto. Mesmo assim, bloqueou o curl | sh exato que vinha injetado e citou como evidência o README e os segundos transcorridos. Os curl normais continuaram funcionando.

Essa divisão faz sentido: seus próprios arquivos são ruidosos, e contaminar a sessão por cada comentário suspeito em node_modules tornaria a ferramenta inutilizável. O conteúdo externo é de onde realmente vem a injeção.

Como saber o que seu agente de código fez e por quê?

Stroq traz vários comandos de auditoria para responder exatamente essa pergunta (em inglês, audit what AI coding agent did):

  • stroq log: as decisões recentes, uma por linha.
  • stroq why: explica a última ação bloqueada ou consultada: o que foi bloqueado, com qual regra e de qual arquivo ou URL saiu a instrução.
  • stroq replay <sessão>: reconstrói a cadeia. Em nosso teste desenhou o WebFetch envenenado, uma seta para o curl que levava o secreto, “DENIED … 1 s later” e o resumo “1 of 6 judged actions traced back to content the agent read”. Com --html o exporta como uma única página.
  • stroq replay --last: lê a transcrição do próprio agente, então funciona com sessões de antes de instalar Stroq. --all repete todas as sessões dos últimos 30 dias contra a política atual.
  • stroq sent: reporta quais credenciais locais já chegaram a um provedor de modelos em sessões passadas.
  • stroq verify: verifica que a cadeia de auditoria não foi alterada.

Se Stroq cometeu um erro, stroq untaint --session=<id> limpa a contaminação; execute-o você mesmo, fora do agente. Nós fizemos isso e o curl bloqueado passou na próxima chamada.

Stroq detém ataques reais de injeção de prompt?

Traz sua própria prova: stroq attack repete cenários contra sua política. Na versão 0.30.0 obtemos 36 cenários: 26 baseados em incidentes públicos (o ataque à cadeia de suprimentos de Nx conhecido como s1ngularity, RoguePilot, GitPwned, Clinejection e vários relatos de issues do Claude Code sobre rm -rf e force-pushes) e 10 sintéticos. Resultado: 15 bloqueados, 21 enviados para aprovação, nenhum passou.

Tenha em mente que são cenários do próprio projeto contra sua própria política: demonstram que as regras fazem o que prometem, não que cubram todos os ataques possíveis. A sobrecarga que medimos foi de uns 150 milissegundos por chamada ao hook, alinhada com os 100–250 ms que o README indica.

Stroq é uma sandbox?

Não, e o próprio projeto o diz. O README esclarece que os hooks não são uma barreira de segurança: os hooks do Claude Code podem ser desativados ou contornados, e os de Stroq também. No Hacker News, seu autor o descreveu como “a filter, not a sandbox”. O único modo que impõe o sistema operacional é o opcional stroq run --sandbox, que envolve o agente em srt de Anthropic (sandbox-exec em macOS, bubblewrap no Linux).

Outros limites que convém conhecer:

  • A proteção depende do seu agente. Claude Code tem allow/deny/ask completo (verificado pelo projeto na versão 2.1.271). Codex deixa passar tudo se o hook não inicia e não tem “ask”; Copilot CLI deixa passar tudo se o hook excede seu tempo; os hooks de Windsurf não veem a saída de comandos nem os downloads web; Cursor não escaneia suas próprias leituras web.
  • A detecção de secretos é exata. Secretos partidos, concatenados ou codificados escapam, e truques de aspas em shell como c"u"rl não são totalmente analisados.
  • A contaminação é grosseira. Uma vez contaminada a sessão, até uma chamada de rede inofensiva é bloqueada até você executar untaint.
  • É um projeto jovem. O pacote npm foi criado em setembro de 2026 e publica uma nova versão a cada poucos dias. O repo e npm mostram apenas aliases (AGGIB, agybay_07), sem mantenedor identificado por nome.

Vale a pena instalar Stroq?

Se você deixa seu agente de código ler páginas web, issues ou resultados de MCP e executar comandos shell na mesma sessão, Stroq te dá duas coisas que você provavelmente não tem hoje: um bloqueio sobre a cadeia clássica de “ler uma página e depois exfiltrar”, e um registro reproduzível do que o agente fez e por quê. Combine com um isolamento real — um contêiner, um usuário separado, --sandbox — em vez de depender apenas disso.


E você? Alguma vez seu agente de código tentou executar algo que você não pediu? Conte-nos o que foi.

Como você limita hoje o que seu agente de código pode fazer na sua máquina?
  • Aprovo cada comando manualmente
  • O executo em um contêiner ou uma VM
  • Uso hooks ou regras de permissões
  • Prefiro outra opção (conte-nos qual)
0 votantes

Comente abaixo ou, se este artigo chegou a você por email, responda diretamente ao email: sua resposta é publicada aqui.

Relacionado: Como saber se um plugin de Claude Code é seguro? Testamos ModVet, o scanner que o revisa antes de instalá-lo :white_check_mark: yoDEV Testado