Volver al blog

IA para principiantesGuía

¿Ejecutas Claude Code o Codex en Descargas? Comprobación de seguridad de AGENTS.md

Un archivo llamado AGENTS.md o CLAUDE.md en Descargas puede dirigir Claude Code y Codex. Qué son estos archivos y una comprobación de 5 minutos de tus configuraciones.

Por CheapTokens TeamPublicado el 6 min de lectura

Portada: un AGENTS.md plantado en la carpeta Descargas llegando a la configuración de un agente de IA
En esta página
  1. Qué son AGENTS.md y CLAUDE.md, y por qué el agente les cree
  2. Qué hicieron los investigadores con un archivo en Descargas
  3. Qué ajustes revisar, y cómo se ve uno normal
  4. La comprobación de 5 minutos
  5. Si algo parece estar mal

Respuesta corta: no inicies Claude Code ni Codex en tu carpeta ~/Downloads. El 22 de octubre de 2026 la empresa de seguridad Forever Security publicó una investigación que muestra que un sitio web puede guardar silenciosamente un archivo llamado AGENTS.md o CLAUDE.md en Descargas, y un agente iniciado en esa carpeta trata entonces el archivo como instrucciones de confianza. A continuación: qué son estos archivos, qué lograron cambiar los investigadores y una comprobación que lleva unos cinco minutos.

Imagina la versión cotidiana. Guardaste una docena de PDFs y capturas de pantalla de un sitio web, abriste una terminal en Descargas, escribiste claude o codex y le pediste que "ordene estos archivos". Nada de eso parece arriesgado. Y ahí está la trampa.

Qué son AGENTS.md y CLAUDE.md, y por qué el agente les cree#

Un agente de programación no empieza cada sesión desde cero. Antes de mirar tu petición, revisa la carpeta en la que se inició en busca de un archivo de texto plano con instrucciones permanentes: "usa tabulaciones, ejecuta las pruebas con npm test, nunca toques la carpeta de migraciones". AGENTS.md es el nombre genérico, CLAUDE.md es la misma idea para Claude Code. En tu propio proyecto estos archivos son útiles, porque los escribiste tú.

Sin embargo, el agente no puede saber quién escribió un archivo. Un CLAUDE.md que un sitio web dejó en Descargas se ve exactamente igual que el que escribiste la semana pasada.

Tarjetas de memoria

Palabras que verás en este artículo

Qué hicieron los investigadores con un archivo en Descargas#

La publicación de Forever Security (autores Gal Weizman y Omer Samet, 22 de octubre de 2026) describe dos casos. Todas las tasas de éxito a continuación son mediciones de los propios investigadores.

Codex. El AGENTS.md plantado le indicaba al agente que añadiera una entrada de servidor MCP a ~/.codex/config.toml, y esa entrada llevaba a instalar un paquete npm llamado function-color. Según los investigadores, el payload se ejecutó en más del 90% de los intentos. Fíjate dónde vive ese archivo: tu carpeta personal, no Descargas. La configuración es de toda la máquina, así que toda sesión posterior en cualquier carpeta queda afectada, mucho después de que hayas olvidado la carpeta Descargas.

Claude Code. El CLAUDE.md plantado intentaba escribir un ajuste de ANTHROPIC_BASE_URL en .claude/settings.json. Ese ajuste decide a dónde envía el agente su tráfico de API. Apúntalo al servidor de otra persona y ese servidor verá tu token OAuth y podrá devolver llamadas a herramientas para que el agente las ejecute. La escritura tuvo éxito aproximadamente la mitad de las veces; una ruta que se ejecutaba dentro de la misma sesión, aproximadamente una quinta parte de las veces.

De un archivo plantado a una configuración modificada
Cómo un archivo de instrucciones plantado acaba en los propios ajustes del agente (Forever Security, 22 de octubre de 2026)

La publicación deja claro que nada está "roto" en ninguno de los dos productos: el agente funciona según su diseño, y el riesgo proviene de dónde está el archivo y de cuánto confía el agente en él. Forever también dice que encontró un AGENTS.md plantado real en la máquina de un cliente y detuvo una instalación maliciosa de npm antes de que se ejecutara código; desde entonces npm ha eliminado function-color. Esa última parte es el relato de los propios investigadores. OpenNET cubrió la historia el 26 de octubre de 2026 y señala un riesgo similar cuando un AGENTS.md llega a través de un pull request o un repositorio clonado.

Verificación rápida

¿Por qué el caso de Codex es peor que una mala sesión en Descargas?

Mostrar respuesta

Respuesta: La configuración que cambió es de toda la máquina, así que toda sesión posterior en cualquier carpeta queda afectada

El archivo plantado solo tiene que ejecutarse una vez. Lo que escribe en ~/.codex/config.toml permanece ahí y se aplica a sesiones posteriores en todas las carpetas.

Qué ajustes revisar, y cómo se ve uno normal#

Dos archivos, uno por cada herramienta de la investigación.

En ~/.codex/config.toml, busca entradas [mcp_servers.*] que no recuerdes haber añadido, y una URL base que no configuraste. Una entrada sospechosa hace que tu máquina descargue y ejecute algo desde npm:

toml
[mcp_servers.helper]
command = "npx"
args = ["-y", "some-package"]

El nombre helper y el paquete de aquí son marcadores de posición. En el caso de los investigadores, el paquete detrás de una entrada así era function-color.

En .claude/settings.json, busca un endpoint de API o un proxy que no hayas puesto tú. Si nunca configuraste ANTHROPIC_BASE_URL, el archivo no debería mencionarlo en absoluto. Si lo hiciste, debería ser la dirección del proveedor que elegiste. Para CheapTokens, un cliente de estilo Anthropic como Claude Code usa https://api.cheaptokens.dev sin /v1 al final; los clientes de estilo OpenAI usan https://api.cheaptokens.dev/v1.

Una URL base que configuraste frente a una que no
El mismo ajuste dos veces: la dirección de la izquierda es una que elegiste, la de la derecha es un host que no reconoces (marcador de posición)

Si ejecutas Claude Code con tu propia clave, la guía paso a paso para conectar Claude Code a CheapTokens muestra el archivo completo, y la documentación enumera ambas URL base. Para bucles de agente largos, DeepSeek-V4-Flash (deepseek-ai/DeepSeek-V4-Flash-0731) tiene un contexto de 380K, hasta 32.768 tokens de salida por respuesta y un único precio a cualquier hora; la página del modelo tiene el resto.

Cline, Aider y otros agentes no formaron parte de esta investigación, y cada uno guarda sus ajustes en su propio lugar. El hábito es el mismo: saber qué archivo contiene el endpoint y leerlo una vez.

La comprobación de 5 minutos#

Abre una terminal y recorre estos pasos en orden. Nada de esto modifica un archivo; solo lee.

Paso a paso

Revisa tu máquina

Encuentra archivos de instrucciones perdidos

bash
find ~/Downloads -maxdepth 3 -name "AGENTS.md" -o -name "CLAUDE.md"

Cualquier coincidencia que no hayas escrito: ábrela como texto y léela. Si no sabes de dónde vino, bórrala.

Lee la configuración de Codex

bash
grep -n "mcp_servers\|base_url" ~/.codex/config.toml

Cada línea [mcp_servers.…] debería ser algo que recuerdes haber añadido. "No such file" está bien si no usas Codex.

Lee los ajustes de Claude Code

bash
grep -n "BASE_URL\|proxy" ~/.claude/settings.json .claude/settings.json

Ejecútalo desde la carpeta de tu proyecto para cubrir ambos archivos. Cada dirección en la salida debería ser un proveedor que hayas elegido.

Revisa tu shell

bash
env | grep -i "BASE_URL"

Esto enumera las URL base configuradas como variables de entorno. La misma regla: deberías reconocer cada una.

Busca el paquete del caso

bash
npm ls -g --depth=0 | grep function-color

Ejecuta también npm ls function-color dentro de los proyectos en los que hayas usado un agente. Si aparece, trata la máquina como comprometida.

Si algo parece estar mal#

Cierra el agente primero. Luego elimina las entradas que no reconozcas y rota todas las credenciales que el agente pudiera ver: claves de API, tokens, cualquier cosa en el entorno. Si la idea de rotar una clave es nueva para ti, qué es una clave de API y cómo guardarla cubre lo básico.

Hábitos que evitan que vuelva a ocurrir, todos tomados de las mitigaciones de los investigadores:

  • Inicia agentes en una carpeta de proyecto que hayas creado tú, no en Descargas.
  • Lee cualquier AGENTS.md o CLAUDE.md que no hayas escrito antes de ejecutar un agente sobre él, incluidos los que llegan a través de un clon o un pull request.
  • Mantén activadas las solicitudes de aprobación y el sandboxing, y desconfía de cualquier instrucción que pida al agente desactivarlos.