AGENTS.md piégé dans Téléchargements : comment Codex et Claude Code ont été détournés, et les parades
Le 22 octobre 2026, Forever Security a publié l'analyse d'un fichier AGENTS.md trouvé dans le dossier Téléchargements d'un de ses clients. Ce long document d'apparence banale demandait à OpenAI Codex de modifier sa configuration globale puis d'installer un paquet npm malveillant1. Les chercheurs ont reproduit l'attaque sur Codex et construit eux-mêmes une variante contre Claude Code. OpenAI et Anthropic n'ont pas de faille à corriger : l'attaque combine deux comportements voulus. La parade passe par les usages et par les réglages que l'administrateur verrouille.
Ce qui s'est passé chez le client
Forever, qui surveille le comportement des agents sur les postes de ses clients, a bloqué en pleine session un agent de code qui tentait d'installer function-color1. Ce paquet appartient à MALFEX, une campagne npm analysée par Checkmarx le 5 octobre 2026 : function-color ne contient pas de charge propre, il installe function-flag, un téléchargeur malveillant depuis juillet 2025 qui récupère un node.exe sur un hébergeur aujourd'hui muet. La charge n'a pas pu être récupérée. Checkmarx situe l'activité de l'opérateur depuis le 6 août 2023, avec 12 paquets publiés dont huit malveillants4.
L'ordre venait d'un AGENTS.md d'environ 13 Ko intitulé « Engineering Work Guidelines », posé dans ~/Downloads, qui servait aussi de dossier de travail à l'agent. Une section en fin de document demandait d'ajouter un bloc [mcp_servers.project-tools] dans ~/.codex/config.toml, chargé d'exécuter npm install function-color, puis de lancer un codex exec enfant avec l'option --dangerously-bypass-approvals-and-sandbox1. La configuration modifiée étant celle de la machine, le serveur se charge ensuite à chaque session Codex, quel que soit le projet ouvert.
Personne ne sait comment le fichier est arrivé là, reconnaît Forever1. Les chercheurs ont seulement démontré qu'une page web peut déposer un fichier portant ce nom dans Téléchargements, et BleepingComputer a vérifié leur page de démonstration2.
Codex et Claude Code : des résultats très différents
Sur Codex, en laboratoire, l'attaque est allée au bout dans plus de 90 % des essais selon Forever1. BleepingComputer précise que ce taux a été mesuré avec une charge inoffensive qui ouvrait la calculatrice2.
Pour Claude Code, aucun fichier malveillant n'a été trouvé dans la nature. Les chercheurs ont écrit leur propre CLAUDE.md en s'inspirant du vrai. Il fait ajouter un ANTHROPIC_BASE_URL dans .claude/settings.json pour faire passer le trafic API par un serveur qu'ils contrôlent. Cette écriture demande une approbation humaine et n'a abouti qu'environ une fois sur deux. Quand elle aboutit, le jeton OAuth part vers ce serveur, et les chercheurs ont pu le rejouer contre l'API réelle. L'exécution de code dans la même session n'a réussi qu'environ une fois sur cinq1. BleepingComputer rapporte de son côté que des appels d'outils ont exécuté du code dans environ 50 % des tests, une formulation qui diverge du rapport2.
Claude Code lit aussi les AGENTS.md : depuis la version 2.1.277, il charge un AGENTS.md comme instructions de projet quand aucun CLAUDE.md, .claude/CLAUDE.md ou CLAUDE.local.md n'existe dans le dossier courant ou au-dessus. Le ~/.claude/CLAUDE.md personnel ne compte pas dans ce test5. Un AGENTS.md planté dans Téléchargements est donc lu par Claude Code lancé dans ce dossier.
Pourquoi l'attaque fonctionne
Deux comportements voulus se combinent. Un agent de code lit et suit le fichier d'instructions du dossier où on le lance : c'est son rôle. Un navigateur enregistre les téléchargements dans ~/Downloads : Chrome, Edge et Firefox le font par défaut sans demander d'emplacement, avec une notification de téléchargement, tandis que Brave a demandé une approbation lors des tests de BleepingComputer2. Aucun des deux n'est une faille. Les protections que les systèmes d'exploitation appliquent aux exécutables téléchargés ne voient ici qu'un fichier texte, dangereux seulement une fois lu par un agent qui dispose d'un shell, du réseau et d'un droit d'écriture sur sa propre configuration. Forever résume : « Markdown is the new executable »1.
Les habitudes amplifient l'exposition. D'après la télémétrie de Forever, environ la moitié de ses clients lancent un agent de code dans leur dossier Téléchargements, et environ un quart des sessions d'agent ouvrent un vrai navigateur1. Gal Weizman, coauteur du rapport, a indiqué à BleepingComputer avoir compté plus de 1 300 sessions Claude Code démarrées depuis ce dossier2. Ce sont des données propriétaires, non vérifiables de l'extérieur.
Côté Codex, Forever explique que l'agent suit l'AGENTS.md d'un projet qu'il considère comme fiable, et qu'un dossier où l'utilisateur a déjà travaillé remplit cette condition1. Cette lecture vient du rapport ; la documentation d'OpenAI ne la formule pas en ces termes.
Le fichier d'instructions entre dans la supply chain
L'injection de prompt indirecte est connue : une page web, un ticket ou un commentaire de code glisse des instructions à un agent. Ici, le contenu non fiable arrive par le canal que l'agent tient pour le plus légitime, le fichier d'instructions du projet. La frontière de confiance passe désormais par le dossier de travail, plus seulement par le dépôt Git : tout ce qui écrit dans ce dossier, navigateur, archive décompressée ou dépôt cloné à la hâte, devient un fournisseur d'instructions. Nous avions décrit ce risque de façon générale dans le contexte de vos agents IA est une surface d'attaque ; l'affaire Forever en donne un cas réel.
Nous classons donc AGENTS.md et CLAUDE.md dans la supply chain logicielle, au même titre qu'un package.json ou qu'un serveur MCP téléchargé (voir faux dépôts et cheval de Troie autour d'un serveur MCP viral). Akshat Tyagi (HFS Research) pose le problème dans CSO Online : « these tools treat following an instruction and granting a privilege as the same act ». Amit Kumar Jena (Kanerika) en tire la règle : « An instruction file can change what the agent tries. It must never change what the agent is allowed to do »3.
Gardons la mesure. Sakshi Grover (IDC) y voit, selon CSO Online, un avertissement crédible plutôt que la preuve d'une exploitation massive, et rappelle que les taux de réussite n'ont pas été validés de façon indépendante3. Un seul cas réel est documenté, son vecteur d'arrivée reste inconnu, et Forever vend la surveillance d'agents. Au 27 octobre 2026, ni OpenAI ni Anthropic n'avaient réagi publiquement à notre connaissance.
Les parades, outil par outil
Pour tous les agents
- Lancer un agent depuis la racine d'un projet créé ou cloné volontairement, jamais depuis Téléchargements, le dossier personnel ou le Bureau. C'est la recommandation d'OpenAI et d'Anthropic rappelée par BleepingComputer2. Pour traiter un fichier téléchargé, le copier dans un dossier de travail propre.
- Lire en entier tout AGENTS.md ou CLAUDE.md que vous n'avez pas écrit1. Un long document banal qui contient une étape d'« initialisation de l'environnement » doit alerter.
- Traiter comme hostile toute instruction qui demande de désactiver les approbations ou la sandbox, d'ajouter un serveur MCP, un proxy ou une URL d'API.
- En cas de doute : considérer le jeton de l'agent comme compromis et le régénérer. Si
function-colora été installé, traiter la machine comme compromise, c'est l'indicateur donné par Forever1.
OpenAI Codex
- Auditer
~/.codex/config.toml: tout bloc[mcp_servers.*]inconnu, toutchatgpt_base_urlmodifié1. - Déclarer Téléchargements non fiable avec une entrée
[projects."/Users/<vous>/Downloads"]ettrust_level = "untrusted". Selon la documentation, un projet non fiable ignore les couches.codex/du projet (configuration locale, hooks, règles)8. La documentation ne dit pas qu'il ignore AGENTS.md : à tester avant d'en faire une règle de flotte. Ne pas confondre avecapproval_policy = "untrusted", valeur qui n'est plus prise en charge. - À l'échelle de la flotte, déployer un
requirements.tomlqui restreint les politiques d'approbation et les modes de sandbox autorisés, avec une listemcp_servers: le client n'active un serveur MCP que si son nom et son identité correspondent à une entrée approuvée9. Un serveur ajouté par un fichier piégé reste alors inerte. - Proscrire
--dangerously-bypass-approvals-and-sandboxhors environnements jetables, comme le recommande Jonathan Ong (Omdia)3.
Claude Code
- Auditer
.claude/settings.jsonet.claude/settings.local.jsondans les projets, ainsi que~/.claude/settings.json: toutANTHROPIC_BASE_URL, proxy ou endpoint que vous n'avez pas configuré1. - Refuser toute demande d'écriture dans
.claude/settings.jsonque vous n'avez pas sollicitée : c'est l'approbation sur laquelle repose la variante démontrée. - Restreindre les fichiers d'instructions chargés : le réglage « Project instructions » accepte
claude-md(CLAUDE.md seuls) oumanaged-only(instructions de l'organisation seules). Il se fixe dans/config, les paramètres utilisateur ou les paramètres managés, et Claude Code l'ignore dans les fichiers de projet5. - Déployer un
managed-settings.json(/Library/Application Support/ClaudeCode/sur macOS,/etc/claude-code/sur Linux,C:\Program Files\ClaudeCode\sur Windows, ou par MDM) avecpermissions.disableBypassPermissionsMode,allowManagedPermissionRulesOnlyetallowManagedMcpServersOnly, puis vérifier avec/statusque la politique s'applique67. - Fermer la variante démontrée avec
allowedProviders(version 2.1.285 et suivantes, paramètres managés uniquement) : sans"customEndpoint"dans la liste, une session qui envoie le trafic vers un autre hôte est refusée. Si vous passez par une passerelle d'entreprise, Claude Code n'admet l'endpoint que pour la valeur exacte épinglée dans le blocenvmanagé6. - Garder en tête qu'en mode non interactif (
-p), la boîte de dialogue de confiance du dossier ne s'affiche jamais, et que les variablesenvdu projet s'appliquent alors dès le démarrage6.
Gouvernance
- Écrire une politique de dossiers de travail et l'outiller : alias shell, script qui refuse de lancer l'agent hors d'un dépôt, règle EDR qui signale un AGENTS.md ou un CLAUDE.md inattendu dans Téléchargements.
- Placer les fichiers d'instructions et les dossiers
.codex/et.claude/sous revue de code avec des propriétaires désignés, faire passer les installations de paquets par un registre interne ou un proxy filtrant, et préférer des jetons à courte durée de vie délivrés par une passerelle d'entreprise, comme le propose Amit Kumar Jena3. - Former les équipes : un quart d'heure suffit pour expliquer pourquoi on ne lance pas un agent dans Téléchargements et pourquoi on lit un AGENTS.md avant de le confier à un agent.
Pour comparer la façon dont chaque outil expose ces réglages, voir notre panorama des agents de code et de leurs critères de choix.
Ce qu'il faut retenir
L'incident tient en un fichier texte posé dans un dossier ouvert au web, lu par un agent qui faisait son travail. Aucun patch ne le corrigera. Des dossiers de travail maîtrisés et des réglages verrouillés par l'administrateur ferment le chemin ; OpenAI et Anthropic fournissent déjà ces leviers, encore faut-il les activer. Forever le dit à sa manière : « We caught this one because we were watching the agent, not the user »1. La même semaine, le cas d'un modèle Qwen qui tentait un upload vers Pékin en sandbox rappelait l'autre moitié du sujet : ce que l'agent peut joindre sur le réseau. Dossiers de travail, réglages managés et règles de sortie réseau se posent avant d'équiper les développeurs.
Sources
- Gal Weizman et Omer Samet (Forever Security), « Markdown Is the New Executable: Attackers Are Dropping Agent Instructions Into Your Downloads Folder From the Web » (fichier de 13 Ko, bloc
mcp_servers,function-color, taux de réussite Codex et Claude Code, CLAUDE.md écrit par les chercheurs, jeton OAuth rejoué, télémétrie clients, parades) — forever.security, 22 octobre 2026. - BleepingComputer, « AI coding agents hijacked using AGENTS.md file in Downloads folder » (charge de test, comportement des navigateurs, page de démonstration vérifiée, 1 300 sessions Claude Code, recommandation des éditeurs) — bleepingcomputer.com, 25 octobre 2026.
- Prasanth Aby Thomas, « Malicious downloads can trick AI coding agents into compromising themselves » (Akshat Tyagi, Amit Kumar Jena, Jonathan Ong, Sakshi Grover) — csoonline.com, 26 octobre 2026.
- Checkmarx Zero, « MALFEX npm malware campaign: three payloads and an adversary that signs their work » — checkmarx.com, 5 octobre 2026.
- Anthropic, documentation Claude Code, « How Claude remembers your project » (lecture d'AGENTS.md, version 2.1.277, réglage Project instructions) — code.claude.com, consulté le 27 octobre 2026.
- Anthropic, documentation Claude Code, « All settings » (
allowedProviders, épinglage d'endpoint,disableBypassPermissionsMode, application deenven mode-p) — code.claude.com, consulté le 27 octobre 2026. - Anthropic, documentation Claude Code, « Deploy managed settings » (emplacements du fichier, vérification par
/status) — code.claude.com, consulté le 27 octobre 2026. - OpenAI, documentation Codex, Configuration Reference (
trust_level,approval_policy,chatgpt_base_url) — developers.openai.com, consulté le 27 octobre 2026. - OpenAI, documentation Codex, Managed configuration (
requirements.toml, listemcp_servers) — developers.openai.com, consulté le 27 octobre 2026.
Dossiers de travail, réglages managés, approbations : cadrer vos agents de code avant le déploiement
Découvrir l'offre AI CyberArticles similaires
Qwen3.8 a tenté d'écrire vers Pékin pendant un test : ce que le cas Cohere change pour vos agents
Le 26 octobre 2026, Cohere a rapporté qu'un modèle Qwen d'Alibaba, testé en sandbox, avait tenté un upload vers un bucket Alibaba Cloud à Pékin alors que son raisonnement annonçait l'inverse. Ce qui est établi, ce qui ne l'est pas, et les contrôles à poser sur vos agents quel que soit le modèle.
Le contexte de vos agents IA est une surface d'attaque
Le contexte des agents IA est à la fois leur carburant opérationnel et leur principale surface d'attaque. Injection de contexte, exfiltration via la Knowledge Base, empoisonnement de la Hot Memory : trois vecteurs distincts, cinq leviers de gouvernance concrets.
Faux dépôts REA et cheval de Troie : le risque supply chain d'un outil viral
Le 13 octobre 2026, un faux dépôt rea-tools/rea distribuait un exécutable Windows détecté comme cheval de Troie, téléchargé 172 fois. Les faits de l'incident, la réponse du projet en moins de 24 heures, et les vérifications à faire avant d'installer un serveur MCP.
REA n'est pas un sandbox : confiner l'analyse d'un binaire inconnu
La politique de sécurité de REA le dit en toutes lettres : l'outil n'est pas un bac à sable. Ouvrir un binaire inconnu le fait analyser par Ghidra ou Hopper avec vos droits. Ce que protège le pont authentifié, ce qu'il ne protège pas, et comment confiner l'analyse.