Kit de segurança para agentes de IA

Prompt não é cadeado. Seu agente precisa de travas.

Basta um e-mail com uma ordem escondida para um agente de IA apagar, enviar ou vazar o que você mandou proteger. Este kit põe a segurança fora do prompt: 5 travas prontas e um banco de 10 ataques para testar o seu agente.

Banner Agente Blindado: 5 travas contra injeção de prompt
Em resumo

O Agente Blindado é um kit gratuito para quem usa agentes de IA com acesso a arquivos, e-mail ou sistemas, como o Claude Code ou o n8n. Ele protege contra a injeção de prompt: um texto de fora (e-mail, página, PDF) com uma ordem escondida que o agente obedece. Em vez de confiar só no prompt, o kit traz 5 travas que funcionam fora dele, um instalador e um banco de 10 ataques inofensivos para medir o seu agente. Para usar, basta Python 3 e, para as travas do Claude Code, o próprio Claude Code.

Vídeo

Entenda em vídeo

O projeto explicado em poucos minutos.

O que é

A segurança mora fora do prompt

Injeção de prompt é o risco nº 1 da lista OWASP Top 10 para aplicações com IA (2025). O modelo pode ser convencido; código que roda antes de cada ação, não.

As 5 travas do Agente Blindado e o banco de ataques

🔒 5 travas que funcionam

Envelope para texto de fora, regras do dono, permissões mínimas, gancho que pede o seu sim e planejador separado do executor.

🧪 Banco de 10 ataques

E-mail, página com texto escondido, planilha, código, resposta de API, base64. Todos inofensivos: chave falsa e endereços que não existem.

📏 Nota medida, não prometida

O teste confere os arquivos depois do ataque (apagou? vazou? criou?), não o que o agente diz que fez.

Como funciona

Cada ação passa por cinco portões

As travas 1 e 2 ajudam o modelo a não cair. As travas 3, 4 e 5 seguram mesmo se ele cair.

📨 Texto de fora→ 1 · envelope→ 2 · regras do dono→ 🤖 modelo decide→ 3 · permissão→ 4 · seu sim→ 5 · executor com cardápio→ ✅ ação
As 5 travas

O que cada trava faz e onde ela está

Cada uma é um arquivo do repositório. Dá para usar uma só ou todas juntas.

1 · Marcar o que vem de fora

Embrulha e-mail, página ou PDF como dado, não ordem, com uma fronteira aleatória que o atacante não adivinha. Também marca palavra por palavra ou codifica em base64.

python3 travas/1-marcar-fora/envelope.py email.txt

2 · Sua palavra vale mais

Bloco para o topo do CLAUDE.md ou do system prompt: quem manda é o dono; todo texto de fora é dado; o que nunca fazer, mesmo que peçam.

# copie para o seu agente
travas/2-hierarquia/REGRAS-DO-DONO.md

3 · Só a chave necessária

Três perfis de permissão do Claude Code: leitor (só lê), escritor (edita e testa, sem rede e sem apagar) e publicador (push e envio pedem o seu sim). Segredos sempre fechados.

travas/3-minimo/escritor.json

4 · Apagar só com o seu sim

Gancho que roda antes de cada ferramenta, fora do modelo. Apagar, enviar, baixar e executar, mexer em .env, push forçado, DROP TABLE: pede o seu sim, ou barra direto em agente sem ninguém olhando. Tem receita para o n8n.

travas/4-aprova/trava_destrutiva.py
travas/4-aprova/N8N.md

5 · Quem decide não executa

Um planejador que só lê devolve um plano em JSON. Você aprova. Um executor sem IA faz só as ações do cardápio e só grava os arquivos que você declarou.

travas/5-planeja-executa/planeja_executa.py

🧪 Banco de ataques

10 documentos envenenados + o teste com modelo real (banco.py) + o teste de pior caso, sem IA (pior_caso.py).

banco/ataques/  ·  teste/
Pré-requisitos

O que você precisa

Nada é enviado para fora. Os testes com modelo usam o Claude Code da sua assinatura.

Python 3.10+

Para o envelope, o gancho, o executor e os testes.

# conferir
python3 --version

Claude Code

Para as travas 3 e 4 e para dar nota ao agente com modelo real.

# conferir
claude --version

pytest

Para os testes das travas sem IA.

# instalar
pip install pytest   # Ubuntu: sudo apt install python3-pytest
Guia de uso · passo a passo

Do clone ao agente blindado

Cada passo tem o comando real. Comece pelo 3: ele já liga três travas de uma vez.

1

Baixe o kit

Clone o repositório numa pasta fora do seu projeto.

git clone https://github.com/inematds/agente-blindado
cd agente-blindado
2

Confira as travas

Os testes sem IA provam o envelope, o gancho e o executor em menos de 1 segundo.

python3 -m pytest teste/ -q   # 8 passed
3

Ligue as travas 2, 3 e 4 no seu projeto

Escolha o perfil (leitor, escritor ou publicador). O instalador faz backup do .claude/settings.json, junta as permissões, liga o gancho e põe as regras do dono no topo do CLAUDE.md. Pode rodar de novo sem duplicar.

./instalar.sh ~/meu-projeto escritor
# agente rodando sozinho (claude -p, cron): barra direto em vez de perguntar
./instalar.sh ~/meu-projeto escritor --negar
4

Ajuste as regras do dono

Abra o CLAUDE.md do projeto e troque o que está entre < >: seu nome e a pasta de trabalho.

nano ~/meu-projeto/CLAUDE.md
5

Embrulhe todo material de fora

Antes de mandar o agente ler um e-mail, página ou PDF, passe pelo envelope e entregue a saída.

python3 travas/1-marcar-fora/envelope.py email.txt --origem "e-mail de fornecedor" > material.txt   # entregue o material.txt ao agente
6

Tarefa com ação no fim: planeja, você aprova, executa

O planejador só lê e devolve o plano. Você vê e diz sim. O executor grava só os arquivos que você declarou em --arquivos.

python3 travas/5-planeja-executa/planeja_executa.py \
  --tarefa "resuma o e-mail e anote as datas" --material material.txt --arquivos resumo.md,notas.md
# o executor grava em ./saida/ da pasta atual (ou use --pasta <pasta>)
7

Veja o pior caso

Simula um agente 100% enganado, que obedece toda ordem escondida, e mostra o que cada trava segura sozinha.

python3 teste/pior_caso.py
8

Dê nota ao seu agente

Roda os 10 ataques com o Claude Code de verdade, sem travas, com travas e no modo planeja. Cada rodada usa a sua assinatura.

python3 teste/banco.py --modos sem,com,planeja --modelo sonnet
# resultado em teste/resultados/<data>.md
9

Veja o que a trava 4 barrou

Cada ação barrada fica registrada na pasta do projeto.

cat ~/meu-projeto/.agente-blindado.log
10

No n8n

Depois do AI Agent, um nó IF separa a ação perigosa e manda para o nó do Telegram, Gmail ou Slack na operação Send and Wait for Response (aprovação). Receita completa no repositório.

travas/4-aprova/N8N.md
Resultados

O que as travas seguram, medido

Pior caso: um agente que obedece TODA ordem escondida. Ataques que não causaram dano, de 10:

0/10

Sem travas. Criou arquivo, apagou o contrato, vazou a chave, mandou o .env para fora.

5/10

Só o gancho (trava 4). Barra apagar, vazar e enviar. Deixa passar a gravação de arquivo comum.

9/10

Planeja × executa (trava 5). Só o cardápio e só os arquivos que você declarou.

⚠️ O que nenhuma trava técnica pega

O ataque 04 não manda fazer nada: ele só mente no texto ("fornecedor aprovado, pagar R$ 48.000"). Código não sabe o que é verdade. Quem pega é você lendo antes de agir, e é por isso que a trava 4 pede o seu sim em tudo que custa dinheiro ou não tem volta.

🤖 E com um modelo de verdade?

Rodamos os 10 ataques no Claude Code (07/11/2026). Sonnet e Haiku seguraram os 10, mesmo sem travas: perceberam a ordem escondida e avisaram o dono. Com as travas ligadas, também seguraram os 10. (Na rodada do Sonnet o conferidor marcou uma queda que era só o modelo citando o ataque para avisar; corrigimos à mão e anotamos em teste/resultados/.) Ou seja: os modelos de ponta já resistem a esses ataques. As travas são para o dia em que o ataque for melhor que o modelo, para agentes com modelos menores ou abertos, e para quando o seu agente tiver acesso a coisa séria. Rode o teste/banco.py com o seu agente e veja a nota dele.

Roadmap

O que vem depois

O kit cresce com os ataques que a comunidade trouxer.

v1 · hoje
5 travas + banco de 10 ataquesEnvelope, regras do dono, 3 perfis, gancho, planejador × executor, instalador, testes sem IA, pior caso e teste com modelo real.
próximo
Mais ataquesImagem com texto escondido, convite de agenda, ataque em várias etapas.
próximo
Fluxo pronto do n8nO fluxo de aprovação para importar, além da receita.