---
service: "Publicasta"
schema_version: "1.0"
article_id: 976
title: "Un archivo AGENTS.md malicioso convierte la carpeta de Descargas en un límite de confianza para los agentes de programación"
language: "es"
default_language: "en"
canonical_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary?lang=es"
json_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.json?lang=es"
api_url: "https://publicasta.com/api/public/v1/channels/it_today_news/articles/agents_md_downloads_folder_coding_agent_trust_boundary?lang=es"
channel_url: "https://publicasta.com/api/public/v1/channels/it_today_news"
channel_articles: "https://publicasta.com/api/public/v1/channels/it_today_news/articles"
search_url: "https://publicasta.com/api/public/v1/search"
documentation_url: "https://publicasta.com/api-docs#reading-publicasta"
openapi_url: "https://publicasta.com/api-docs/openapi.json"
published_at: "2026-10-26T13:37:56+00:00"
updated_at: "2026-10-26T13:37:56+00:00"
translations:
  - language: "ar"
    html_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary?lang=ar"
    markdown_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.md?lang=ar"
    json_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.json?lang=ar"
  - language: "de"
    html_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary?lang=de"
    markdown_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.md?lang=de"
    json_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.json?lang=de"
  - language: "en"
    html_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary?lang=en"
    markdown_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.md?lang=en"
    json_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.json?lang=en"
  - language: "es"
    html_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary?lang=es"
    markdown_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.md?lang=es"
    json_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.json?lang=es"
  - language: "fr"
    html_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary?lang=fr"
    markdown_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.md?lang=fr"
    json_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.json?lang=fr"
  - language: "pl"
    html_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary?lang=pl"
    markdown_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.md?lang=pl"
    json_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.json?lang=pl"
  - language: "ru"
    html_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary?lang=ru"
    markdown_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.md?lang=ru"
    json_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.json?lang=ru"
  - language: "zh"
    html_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary?lang=zh"
    markdown_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.md?lang=zh"
    json_url: "https://publicasta.com/it_today_news/agents_md_downloads_folder_coding_agent_trust_boundary.json?lang=zh"
---

# Un archivo AGENTS.md malicioso convierte la carpeta de Descargas en un límite de confianza para los agentes de programación

> Una investigación de seguridad muestra cómo una descarga del navegador y el sistema de instrucciones de un agente de programación con IA pueden combinarse en una vía de ataque práctica. El control inmediato es sencillo: mantener a los agentes fuera de carpetas no revisadas deliberadamente.

Bastó un archivo de texto plano en la carpeta de Descargas de un desarrollador para que un agente de programación con IA intentara instalar un paquete npm malicioso conocido. El incidente, divulgado por Forever Security el 22 de octubre y difundido más ampliamente entre el 25 y el 26 de octubre, sirve de advertencia para los equipos que han empezado a tratar los agentes de programación como herramientas habituales de desarrollo.

 ![Portátil que muestra un archivo AGENTS.md descargado en la carpeta Downloads junto a un espacio de trabajo de programación, ilustrando un límite de confianza de un agente de IA.](https://publicasta.com/storage/projects/17/pages/976/2026/10/744f0b7e-640c-44e8-b1d9-1431f07971f2.webp)

 El detalle importante no es que un atacante encontrara un paquete npm nuevo. Es que la solicitud de instalación procedía de un archivo de instrucciones, no de una dependencia del repositorio, una solicitud de cambios ni una tarea indicada explícitamente por el desarrollador. El archivo se llamaba `AGENTS.md`, un formato que Codex está diseñado para detectar e incorporar a su contexto de trabajo. Forever afirma que el archivo se encontró en el directorio `~/Downloads` de un cliente y que su software de seguridad detuvo la instalación del paquete malicioso `function-color` antes de que la carga útil se ejecutara en el equipo del cliente.

 Esto no permite establecer cómo llegó allí el archivo. Forever afirma que no pudo determinar la vía de entrega original. En una demostración independiente, mostró que una página web puede guardar un archivo con ese nombre en el directorio de descargas predeterminado de un navegador, mientras que BleepingComputer reprodujo el comportamiento de descarga inofensivo. La distinción importa: el incidente del cliente y la reproducción respaldan el riesgo, pero no demuestran que el archivo del cliente se entregara mediante la misma técnica del navegador.

 ## El hallazgo en una frase

 La carpeta de Descargas suele tratarse como una zona temporal de aterrizaje para archivos no confiables. Un agente de programación con IA puede tratar esa misma carpeta como una fuente de instrucciones. Cuando ambas suposiciones coinciden, un documento inerte para el sistema operativo puede convertirse en una entrada para la automatización con privilegios.

 La propia documentación de Codex de OpenAI explica por qué `AGENTS.md` es importante. Codex CLI busca automáticamente estos archivos desde el directorio global de Codex, pasando por la ruta del repositorio y el directorio de trabajo actual, y después incorpora su contenido a la conversación del modelo. El mecanismo está pensado para transmitir a una sesión del agente las convenciones del proyecto, los comandos de prueba, las notas de arquitectura y otras indicaciones locales. En un repositorio controlado por un equipo, resulta útil. En una carpeta cuyo contenido puede cambiar a causa de descargas, se convierte en un problema de procedencia.

 Por tanto, el límite de seguridad no es solo el modelo, el shell o el registro de paquetes. También es el directorio desde el que el agente carga las instrucciones.

 ## Qué observó Forever

 El informe de Forever describe una alerta real de un cliente: un agente intentó instalar `function-color`, un paquete que las bases de datos de seguridad clasifican como malicioso. Los investigadores rastrearon la instrucción hasta un archivo `AGENTS.md` situado en la carpeta de Descargas del cliente. Según el informe, el archivo estaba redactado con el estilo de una guía de ingeniería ordinaria e incluía instrucciones de configuración que hicieron que el agente modificara su propia configuración e iniciara una actividad de instalación de paquetes.

 Después, Forever probó el archivo recuperado en una máquina virtual aislada. Según el informe, Codex siguió la secuencia del ataque en más del 90 % de sus intentos. Los investigadores también prepararon una prueba relacionada contra Claude Code usando un archivo `CLAUDE.md`. Esa versión intentaba redirigir el tráfico del modelo de la herramienta a través de un endpoint controlado por el atacante y exponer el token de autenticación de la herramienta. Forever informa de una tasa de éxito menor para esa demostración, aproximadamente la mitad de los ensayos.

 Esos porcentajes deben leerse como resultados de pruebas, no como la probabilidad de que un usuario cualquiera sea comprometido. Las pruebas utilizaron documentos cuidadosamente construidos, entornos controlados y rutas de ejecución conocidas. Demuestran que el mecanismo de archivos de instrucciones puede utilizarse de forma abusiva bajo las condiciones adecuadas. No miden la frecuencia del ataque entre la población general de desarrolladores.

 El paquete no es simplemente sospechoso. La base de datos Open Source Vulnerability registra versiones maliciosas de `function-color`, incluidas las versiones `1.0.0` y `1.7.3`, y aconseja considerar comprometido cualquier sistema que haya instalado o ejecutado el paquete. Desde entonces, npm ha sustituido el paquete por una versión de retención de seguridad. Eso lo convierte en un indicador útil para los defensores, pero la lección general no depende de este nombre concreto. Otro archivo de instrucciones podría dirigir al agente hacia un paquete distinto, un archivo de credenciales, un endpoint interno o un cambio de configuración.

 ## Por qué Descargas es diferente de un repositorio

 Un repositorio de código fuente suele tener una historia de propiedad clara. Puede estar protegido por controles de ramas, cambios revisados, commits firmados, registros de acceso y una operación de clonación conocida. Ninguno de esos controles se aplica automáticamente a la carpeta Descargas de un usuario.

 Los navegadores suelen guardar allí los archivos descargados de forma predeterminada. BleepingComputer probó la prueba de concepto de Forever e informó que Chrome, Edge y Firefox descargaron un archivo `AGENTS.md` inofensivo en Descargas mientras mostraban sus notificaciones habituales de descarga. La prueba no ejecutó código ni eludió las advertencias normales del navegador. Precisamente por eso el ejemplo es importante: el archivo no necesita ser ejecutable para influir después en un agente.

 El ataque aún requiere una segunda condición. El usuario, un trabajo de automatización u otro agente debe iniciar un agente de programación en ese directorio, o incluirlo de alguna otra forma en la ruta de búsqueda de instrucciones del agente. Descargar un archivo no equivale a ejecutarlo. Un archivo Markdown malicioso en Descargas solo resulta peligroso cuando una herramienta que confía en las instrucciones locales lo lee y tiene autoridad suficiente para actuar según su contenido.

 Ese requisito aclara cuál es el control adecuado. Los equipos no necesitan prohibir las descargas del navegador ni eliminar `AGENTS.md`. Necesitan dejar de tratar todos los directorios de trabajo como si fueran igual de confiables.

 ## La diferencia entre contenido y autoridad

 La extensión del archivo no es el problema central. Markdown suele ser contenido pasivo. En una aplicación convencional, abrir un archivo Markdown no debería instalar software ni reescribir un archivo de configuración. Sin embargo, en un flujo de trabajo con agentes, el arnés convierte su contenido en instrucciones de comportamiento.

 Esto crea un error de categoría fácil de cometer durante una implementación. Un desarrollador puede pensar: «El agente puede leer documentación, pero aun así necesita mi aprobación para hacer algo peligroso». En la práctica, un agente puede combinar el documento con sus propias herramientas, permisos, convenciones recordadas e integraciones disponibles. Si el documento convence al agente de que un cambio de configuración forma parte de la preparación rutinaria del proyecto, la acción resultante puede cruzar un límite que el usuario nunca pretendió autorizar.

 El modelo mental más seguro es tratar los archivos de instrucciones que puede leer un agente como configuración con consecuencias ejecutables. Quizá no sean ejecutables en el sentido del sistema operativo, pero influyen en lo que el agente lee, escribe, invoca y considera confiable. Por eso están más cerca de los perfiles de shell, los archivos de flujos de trabajo de CI, la configuración del editor y los manifiestos de paquetes que de un README común.

 Esto no significa que todos los archivos de instrucciones sean hostiles. Significa que su procedencia debe estar clara. Un archivo debería considerarse confiable porque un propietario conocido lo creó o revisó en un repositorio conocido, no porque su prosa parezca profesional o porque termine en `.md`.

 ## Qué está confirmado y qué sigue siendo incierto

 Varios hechos están respaldados por el informe principal y por coberturas independientes:

 - Forever encontró un archivo `AGENTS.md` en la carpeta Descargas de un cliente mientras investigaba un intento de instalar `function-color`.
- Forever reprodujo la técnica recuperada contra Codex en un entorno aislado e informó de una ejecución exitosa en más del 90 % de los intentos.
- Forever demostró una técnica relacionada de redirección de configuración contra Claude Code.
- OSV ha registrado el paquete `function-color` como malicioso, con versiones afectadas dentro de la línea 1.x.
- BleepingComputer probó una demostración inofensiva de descarga desde el navegador y confirmó que los navegadores habituales pueden guardar un archivo con el nombre pertinente en Descargas siguiendo el comportamiento normal de descarga.
- OpenAI documenta que Codex descubre e inyecta instrucciones de `AGENTS.md` en una sesión según la ubicación del directorio.

 Otras afirmaciones deben mantenerse dentro de límites más precisos:

 - Los investigadores no establecieron cómo llegó el archivo original del cliente al equipo.
- Que un navegador pueda guardar el archivo no demuestra que el navegador causara el incidente del cliente.
- Iniciar un agente en Descargas es necesario para la ruta demostrada, pero por sí solo no basta; el archivo debe contener instrucciones persuasivas, el agente debe tener capacidades pertinentes y el usuario o la automatización deben permitir las acciones resultantes.
- Las tasas de éxito comunicadas proceden de pruebas controladas y no deben interpretarse como probabilidades representativas de una población.

 Esta separación es importante para la respuesta a incidentes. Evita que los equipos reaccionen de forma exagerada ante una afirmación de entrega no demostrada, sin dejar de abordar el fallo de confianza que sí se ha demostrado.

 ## Controles prácticos para plataformas de desarrollo

 El primer control es procedimental y económico: prohibir el inicio de agentes de programación en Descargas, Escritorio, directorios temporales de exportación, carpetas compartidas de archivos adjuntos y otras ubicaciones cuyo contenido suelen crear los navegadores o las aplicaciones externas. Hay que proporcionar a los desarrolladores un espacio de trabajo de proyectos con un propietario claro y una política predecible para los archivos de instrucciones.

 El segundo control es una comprobación durante el lanzamiento. Los envoltorios de los agentes pueden inspeccionar el directorio de trabajo actual y sus directorios superiores antes de iniciar una sesión. Si la ruta corresponde a una ubicación conocida como no confiable, el envoltorio puede detenerse, exigir una anulación explícita o iniciar el agente con capacidades de solo lectura. La comprobación debe ser visible y auditable, no quedar oculta en un documento de políticas.

 El tercer control es la procedencia de los archivos. Los equipos de endpoints y de plataformas de desarrollo deberían vigilar la creación de nuevos archivos `AGENTS.md`, `CLAUDE.md` y otros archivos de instrucciones similares en carpetas en las que el usuario pueda escribir. Que un proceso del navegador cree uno de estos nombres merece más atención que el hecho de que el navegador guarde un PDF normal. El evento no demuestra que haya habido una intrusión, pero sí constituye una señal de detección útil.

 El cuarto control es la integridad de la configuración. La investigación muestra por qué los defensores deben supervisar la configuración propia del agente, no solo el árbol del proyecto. Los endpoints de modelo inesperados, los ajustes de proxy, los registros de servidores MCP, las nuevas definiciones de herramientas o los cambios en los modos de permisos deberían revisarse como eventos de seguridad. Un cambio de configuración que persiste entre proyectos es más grave que una instrucción aislada en un único repositorio.

 El quinto control es la separación de credenciales. Los agentes de programación deberían recibir las credenciales mínimas necesarias para la tarea, preferiblemente credenciales de corta duración limitadas a un repositorio o entorno. Un agente local que pueda leer credenciales de la nube, publicar paquetes, acceder a producción y modificar su propia configuración de herramientas tiene un radio de impacto muy amplio, incluso cuando el engaño inicial sea sencillo.

 El sexto control consiste en mantener activados los mecanismos de aprobación y sandbox. Un documento que indique a un agente que omita las aprobaciones, desactive un sandbox, instale un paquete desconocido o «valide» un nuevo servidor de herramientas debe tratarse como hostil hasta que una persona verifique la instrucción mediante un canal independiente. Cuanto más insista un archivo en que un control de seguridad es necesario para una configuración rutinaria, más detenidamente debe examinarse la solicitud.

 ## Lista de comprobación para responder ante un archivo de instrucciones sospechoso

 Si un desarrollador encuentra un archivo `AGENTS.md`, `CLAUDE.md` o comparable que no esperaba en Descargas u otro directorio no confiable, lo más seguro como primer paso es dejar de utilizar la sesión del agente afectado. No hay que pedirle al mismo agente que determine si el archivo es malicioso; el archivo podría estar condicionando ya el comportamiento del agente.

 Conserve el archivo y las marcas de tiempo relevantes para la investigación, pero examínelo desde un entorno confiable separado. Registre qué agente estaba ejecutándose, cuál era su directorio de trabajo, a qué archivos podía acceder, qué comandos o herramientas invocó y qué credenciales tenía disponibles. Revise la configuración global y específica del proyecto del agente en busca de nuevos endpoints, registros MCP, ajustes de proxy, cambios de permisos o entradas de inicio desconocidas.

 Busque `function-color` y otros paquetes a los que haga referencia el archivo en los manifiestos de paquetes, los archivos de bloqueo, las cachés de los gestores de paquetes, el historial del shell, los registros de procesos y la telemetría de los endpoints. La orientación de OSV para las versiones afectadas de `function-color` es deliberadamente severa: un host que haya instalado o ejecutado el paquete malicioso debe considerarse comprometido, no simplemente limpiarse eliminando un directorio.

 Rote las credenciales del agente y del control de código fuente desde un dispositivo limpio. Incluya claves de acceso a la nube, tokens de registros de paquetes, claves SSH, tokens de API y credenciales de sesión que el agente pudiera leer o transmitir. Invalide las sesiones persistentes cuando el proveedor lo permita. Revise la actividad del control de código fuente, las publicaciones de paquetes, los inicios de sesión en la nube y los cambios de configuración realizados durante la ventana de exposición.

 Por último, examina cómo se inició el agente. Si el directorio de trabajo fue seleccionado automáticamente por un editor, un acceso directo del escritorio, un ejecutor de tareas o un flujo controlado por el navegador, corrige esa selección de ruta para que la misma condición no vuelva a producirse. El objetivo no es solo eliminar un archivo, sino dificultar la creación de una combinación insegura entre directorio y agente.

 ## Qué pueden cambiar los proveedores sin romper el flujo de trabajo

 El informe señala que el comportamiento demostrado no es una vulnerabilidad de producto convencional que pueda corregirse con un único parche. Eso no significa que los proveedores no tengan ningún papel. Los clientes de agentes pueden mostrar claramente el origen de las instrucciones, indicar qué archivos se cargaron y desde qué directorios, advertir cuando un archivo procede de una carpeta de descargas y distinguir las directrices propias del repositorio de los archivos ambientales que el usuario puede modificar.

 Un cliente también podría aplicar valores predeterminados más restrictivos a las instrucciones que soliciten acciones de gran impacto. Escribir una configuración global persistente, cambiar un endpoint del modelo, registrar un nuevo servidor de herramientas, instalar un paquete o desactivar un sandbox debería requerir una confirmación más sólida que editar un archivo de código fuente. La confirmación debería identificar el archivo de instrucciones, su ruta, la acción solicitada y el alcance de su persistencia.

 Las plataformas para desarrolladores pueden proporcionar archivos de instrucciones firmados o aprobados por políticas para repositorios administrados. Las capas empresariales pueden mantener listas de raíces autorizadas, exigir credenciales por proyecto y recopilar telemetría sobre las instrucciones cargadas y las llamadas a herramientas. Los gestores de paquetes pueden seguir mejorando la detección de paquetes maliciosos, pero el análisis de registros por sí solo no puede resolver un problema en el que primero se persuade al agente para que descargue un paquete.

 El reto de diseño consiste en conservar la utilidad de las instrucciones locales sin permitir que un documento descargado se convierta silenciosamente en una política administrativa. La visibilidad y la autoridad limitada por alcance son controles más duraderos que intentar enseñar a un modelo a reconocer todos los párrafos maliciosos posibles.

 ## La lección más amplia para el desarrollo asistido por IA

 Es fácil describir el incidente como una inyección de prompts, pero esa etiqueta resulta demasiado limitada para los equipos de operaciones. El riesgo práctico surge de una cadena: colocación de un archivo no confiable, descubrimiento automático de instrucciones, interpretación por el modelo, acceso a herramientas, configuración persistente y credenciales disponibles en el equipo. Cada eslabón puede parecer normal cuando se revisa por separado.

 Esa cadena también explica por qué los controles de endpoint existentes pueden no detectarlo. Puede no haber un archivo adjunto ejecutable, una macro evidente ni un exploit contra el navegador o el sistema operativo. La acción maliciosa ocurre cuando una herramienta de automatización confiable interpreta texto y ejecuta el resultado. Por eso, la monitorización de seguridad debe relacionar la creación de archivos, el inicio del agente, las escrituras de configuración, la instalación de paquetes y el uso de credenciales entre distintos procesos.

 El consejo inmediato es concreto: mantén los agentes de programación fuera de la carpeta de descargas e inspecciona los archivos de instrucciones antes de confiar en ellos. El consejo arquitectónico es más amplio: trata todo lo que lea un agente como una entrada potencialmente no confiable, incluidos los archivos que parezcan documentación del proyecto. Después, limita lo que el agente puede hacer cuando esa entrada solicite cambios fuera del proyecto que debe modificar.

 Los agentes de programación con IA se están convirtiendo en parte de la plataforma para desarrolladores. Sus directorios de trabajo, jerarquías de instrucciones, archivos de configuración y credenciales merecen el mismo control de propiedad y monitorización que los ejecutores de CI y los servidores de compilación. El caso de la carpeta de descargas resulta útil porque vuelve concreta esa exigencia: un archivo no tuvo que ejecutarse por sí mismo. Solo tuvo que ser leído por un software autorizado para actuar.
