Un archivo AGENTS.md en Descargas puede secuestrar Codex y Claude Code
Un archivo AGENTS.md dejado en la carpeta de Descargas de un cliente ordenó al agente de programación con IA que se ejecutaba allí instalar un paquete npm malicioso, según informó la empresa Forever Security el 22 de octubre. En sus propias pruebas, el mismo truco llevó a Codex de OpenAI a ejecutar la orden del atacante en más del 90% de los intentos.
Los agentes de código como Codex y Claude Code leen los archivos de instrucciones de la carpeta en la que se inician y los tratan como reglas de trabajo. Los navegadores guardan por defecto las descargas en esa misma carpeta, y muchos lanzan sus agentes desde ahí. Según Forever, aproximadamente la mitad de sus clientes inicia un agente de código en Descargas, y solo Claude Code abrió allí más de 1.300 sesiones en sus equipos.
Cómo el AGENTS.md plantado secuestró al agente
El archivo pesaba 13 KB y parecía una guía de desarrollo corriente. Cerca del final presentaba una instalación como preparación de herramientas antes de la tarea del usuario: la del paquete function-color. La vigilancia de Forever bloqueó la instalación antes de que se ejecutara el código, y el paquete ya ha sido retirado de npm. Los investigadores no pudieron averiguar cómo llegó el archivo al equipo. Sí demostraron que una página web puede guardar sin preguntar un archivo llamado AGENTS.md en Descargas: Chrome, Edge y Firefox guardan allí por defecto y solo muestran una notificación, mientras que Brave pidió permiso en sus pruebas.
Después, Gal Weizman y Omer Samet reprodujeron el ataque en una máquina virtual. En Codex, el archivo pedía al agente añadir un servidor MCP en ~/.codex/config.toml, la configuración global de todas las sesiones de Codex del equipo, para que la orden del atacante se lanzara en cada inicio. Con una carga inofensiva que abría la calculadora, funcionó en más del 90% de los intentos.
Para Claude Code escribieron un CLAUDE.md que pedía al agente apuntar la configuración del proyecto a una supuesta pasarela interna. En cuanto Claude hacía el cambio, sus peticiones a la API iban al servidor de los investigadores junto con el token OAuth del usuario. Ese servidor podía responder en lugar del modelo y enviar órdenes al agente, lo que permitió ejecutar código en aproximadamente la mitad de las pruebas. A través de un subagente, la ejecución dentro de la misma sesión se logró en torno a una de cada cinco veces.
Nada que parchear para los fabricantes
«Aquí no hay nada que OpenAI o Anthropic tengan que parchear», escriben los investigadores. Un agente que sigue el AGENTS.md de su carpeta hace justo aquello para lo que fue creado, así que el riesgo está en dónde se inicia. OpenAI y Anthropic recomiendan lanzar los agentes desde la carpeta del proyecto, y ninguna de las dos empresas comentó la investigación. En agosto, otro fallo de Claude Code permitió que una issue de GitHub llegara a los secretos de CI, y ambos casos se basan en el mismo problema: el agente no distingue las órdenes del usuario del texto que solo lee.
Qué revisar en Codex y Claude Code
- Carpeta de trabajo: inicia los agentes en la raíz de un proyecto concreto, no en Descargas ni en tu carpeta personal.
- Archivos de instrucciones: lee cualquier AGENTS.md o CLAUDE.md que no hayas escrito antes de que lo use un agente.
- Codex: busca en
~/.codex/config.tomlbloques[mcp_servers.*]desconocidos o unchatgpt_base_urlcambiado. - Claude Code: revisa el
.claude/settings.jsondel proyecto por si aparece una dirección de API inesperada, comoANTHROPIC_BASE_URL. - Confirmaciones: mantén activados los avisos de confirmación y el sandbox, y desconfía de cualquier archivo que pida al agente desactivarlos.
Si un agente pudo seguir ya un archivo así, borrarlo no basta: los ajustes que cambió el agente siguen ahí. Quítalos a mano y cambia tus tokens, porque un token filtrado funciona como una sesión iniciada. Según Forever, si function-color aparece entre los paquetes instalados, el equipo debe darse por comprometido.