Basta un correo con una instrucción oculta para que un agente de IA borre, envíe o filtre lo que le pediste proteger. Este kit lleva la seguridad fuera del prompt: 5 barreras listas y un banco de 10 ataques para probar tu agente.

Agente Blindado es un kit gratuito para quienes usan agentes de IA con acceso a archivos, correo electrónico o sistemas, como Claude Code o n8n. Protege contra la inyección de prompts: un texto externo (correo, página, PDF) con una instrucción oculta que el agente obedece. En lugar de confiar solo en el prompt, el kit incluye 5 barreras que funcionan fuera de él, un instalador y un banco de 10 ataques inofensivos para medir tu agente. Para usarlo, solo necesitas Python 3 y, para las barreras de Claude Code, el propio Claude Code.
El proyecto explicado en pocos minutos.
La inyección de prompts es el riesgo n.º 1 de la lista OWASP Top 10 para aplicaciones de IA (2025). Se puede convencer al modelo; al código que se ejecuta antes de cada acción, no.
Sobre para texto externo, reglas del dueño, permisos mínimos, un gancho que pide tu aprobación y un planificador separado del ejecutor.
Correo, página con texto oculto, hoja de cálculo, código, respuesta de API, base64. Todos inofensivos: clave falsa y direcciones que no existen.
La prueba revisa los archivos después del ataque (¿borró? ¿filtró? ¿creó?), no lo que el agente dice que hizo.
Las barreras 1 y 2 ayudan a que el modelo no caiga. Las barreras 3, 4 y 5 lo contienen incluso si cae.
Cada una es un archivo del repositorio. Puedes usar una sola o todas juntas.
Envuelve el correo, la página o el PDF como dato, no instrucción, con un límite aleatorio que el atacante no puede adivinar. También marca cada palabra o codifica en base64.
python3 travas/1-marcar-fora/envelope.py email.txtBloque para el inicio del CLAUDE.md o del system prompt: quien manda es el dueño; todo texto externo es un dato; qué nunca hacer, aunque lo pidan.
# copia a tu agente
travas/2-hierarquia/REGRAS-DO-DONO.mdTres perfiles de permisos de Claude Code: lector (solo lee), escritor (edita y prueba, sin red ni borrar) y publicador (para hacer push y enviar, pide tu aprobación). Los secretos siempre quedan protegidos.
travas/3-minimo/escritor.json
Gancho que se ejecuta antes de cada herramienta, fuera del modelo. Para borrar, enviar, descargar y ejecutar, modificar .env, hacer push forzado o DROP TABLE, pide tu aprobación; en agentes sin supervisión, lo bloquea directamente. Incluye instrucciones para n8n.
travas/4-aprova/trava_destrutiva.py travas/4-aprova/N8N.md
Un planificador que solo lee devuelve un plan en JSON. Tú lo apruebas. Un ejecutor sin IA realiza solo las acciones del menú y solo guarda los archivos que declaraste.
travas/5-planeja-executa/planeja_executa.py
10 documentos envenenados + la prueba con un modelo real (banco.py) + la prueba del peor caso, sin IA (pior_caso.py).
banco/ataques/ · teste/
No se envía nada al exterior. Las pruebas con modelo usan Claude Code con tu suscripción.
Para el sobre, el gancho, el ejecutor y las pruebas.
# comprobar
python3 --versionPara las barreras 3 y 4, y para puntuar al agente con un modelo real.
# comprobar
claude --versionPara las pruebas de las barreras sin IA.
# instalar pip install pytest # Ubuntu: sudo apt install python3-pytest
Cada paso incluye el comando real. Empieza por el 3: activa tres barreras de una vez.
Clona el repositorio en una carpeta fuera de tu proyecto.
git clone https://github.com/inematds/agente-blindado cd agente-blindado
Las pruebas sin IA verifican el sobre, el gancho y el ejecutor en menos de 1 segundo.
python3 -m pytest teste/ -q # 8 passed
Elige el perfil (lector, escritor o publicador). El instalador hace una copia de seguridad de .claude/settings.json, combina los permisos, activa el gancho y pone las reglas del dueño al inicio del CLAUDE.md. Puedes ejecutarlo otra vez sin duplicar nada.
./instalar.sh ~/meu-projeto escritor # agente sin supervisión (claude -p, cron): bloquea directamente en vez de preguntar ./instalar.sh ~/meu-projeto escritor --negar
Abre el CLAUDE.md del proyecto y cambia lo que está entre < >: tu nombre y la carpeta de trabajo.
nano ~/meu-projeto/CLAUDE.md
Antes de pedirle al agente que lea un correo, una página o un PDF, pásalo por el sobre y entrégale el resultado.
python3 travas/1-marcar-fora/envelope.py email.txt --origem "correo de proveedor" > material.txt
El planificador solo lee y devuelve el plan. Tú lo revisas y das tu aprobación. El ejecutor guarda solo los archivos que declaraste en --arquivos.
python3 travas/5-planeja-executa/planeja_executa.py \ --tarefa "resume el correo y anota las fechas" --material material.txt --arquivos resumen.md,notas.md
Simula un agente completamente engañado, que obedece todas las instrucciones ocultas, y muestra lo que cada barrera puede contener por sí sola.
python3 teste/pior_caso.py
Ejecuta los 10 ataques con Claude Code real, sin barreras, con barreras y en modo de planificación. Cada ronda usa tu suscripción.
python3 teste/banco.py --modos sem,com,planeja --modelo sonnet # resultado en teste/resultados/<data>.md
Cada acción bloqueada queda registrada en la carpeta del proyecto.
cat ~/meu-projeto/.agente-blindado.log
Después de AI Agent, un nodo IF separa la acción peligrosa y la envía al nodo de Telegram, Gmail o Slack en la operación Send and Wait for Response (aprobación). La guía completa está en el repositorio.
travas/4-aprova/N8N.md
Peor caso: un agente que obedece TODAS las instrucciones ocultas. Ataques que no causaron daños, de 10:
Sin barreras. Creó un archivo, borró el contrato, filtró la clave y envió el .env al exterior.
Solo el gancho (barrera 4). Bloquea el borrado, la filtración y el envío. Permite guardar un archivo común.
Planifica × ejecuta (barrera 5). Solo las acciones del menú y solo los archivos que declaraste.
El ataque 04 no pide hacer nada: solo miente en el texto ("proveedor aprobado, pagar R$ 48.000"). El código no sabe qué es verdad. Tú lo detectas al leer antes de actuar. Por eso la barrera 4 pide tu aprobación para todo lo que cueste dinero o sea irreversible.
Ejecutamos los 10 ataques en Claude Code (07/11/2026). Sonnet y Haiku resistieron los 10, incluso sin barreras: detectaron la instrucción oculta y avisaron al dueño. Con las barreras activadas, también resistieron los 10. (En la ronda de Sonnet el verificador marcó una caída que era solo el modelo citando el ataque para avisar; lo corregimos a mano y lo anotamos en teste/resultados/.) En otras palabras, los modelos de punta ya resisten estos ataques. Las barreras sirven para el día en que el ataque supere al modelo, para agentes con modelos más pequeños o abiertos y para cuando tu agente tenga acceso a algo importante. Ejecuta teste/banco.py con tu agente y revisa su puntuación.
El kit crecerá con los ataques que aporte la comunidad.