Un fichier AGENTS.md dans Téléchargements peut détourner Codex et Claude Code
Un fichier AGENTS.md laissé dans le dossier Téléchargements d'un client a demandé à l'agent de programmation IA qui y tournait d'installer un paquet npm malveillant, a rapporté la société Forever Security le 22 octobre. Dans ses propres tests, la même astuce a poussé Codex d'OpenAI à exécuter la commande de l'attaquant dans plus de 90% des tentatives.
Les agents de code comme Codex et Claude Code lisent les fichiers d'instructions du dossier où ils sont lancés et les traitent comme les règles du travail. Les navigateurs enregistrent par défaut les téléchargements dans ce même dossier, et beaucoup lancent leurs agents depuis là. Selon Forever, environ la moitié de ses clients démarrent un agent de code dans Téléchargements, et Claude Code à lui seul y a ouvert plus de 1 300 sessions sur leurs machines.
Comment l'AGENTS.md piégé a détourné l'agent
Le fichier pesait 13 Ko et ressemblait à des consignes de développement ordinaires. Vers la fin, il présentait une installation comme la préparation des outils avant la tâche de l'utilisateur : celle du paquet function-color. La surveillance de Forever a bloqué l'installation avant l'exécution du code, et le paquet a depuis été retiré de npm. Les chercheurs n'ont pas pu établir comment le fichier est arrivé sur la machine. Ils ont en revanche montré qu'une page web peut déposer sans demander un fichier nommé AGENTS.md dans Téléchargements : Chrome, Edge et Firefox y enregistrent par défaut et n'affichent qu'une notification, tandis que Brave a demandé l'autorisation lors de leurs tests.
Gal Weizman et Omer Samet ont ensuite reproduit l'attaque dans une machine virtuelle. Pour Codex, le fichier demandait à l'agent d'ajouter un serveur MCP dans ~/.codex/config.toml, la configuration globale de toutes les sessions Codex de l'ordinateur, afin que la commande de l'attaquant se lance à chaque démarrage. Avec une charge inoffensive qui ouvrait la calculatrice, cela a fonctionné dans plus de 90% des tentatives.
Pour Claude Code, les chercheurs ont écrit un CLAUDE.md qui demandait à l'agent d'indiquer dans les réglages du projet l'adresse d'une prétendue passerelle interne. Une fois la modification faite, les requêtes API de Claude partaient vers le serveur des chercheurs avec le jeton OAuth de l'utilisateur. Ce serveur pouvait répondre à la place du modèle et envoyer des commandes à l'agent, ce qui a permis d'exécuter du code dans environ la moitié des tests. En passant par un sous-agent, l'exécution dans la même session a réussi environ une fois sur cinq.
Rien à corriger pour les éditeurs
« Il n'y a rien à corriger ici pour OpenAI ou Anthropic », écrivent les chercheurs. Un agent qui suit l'AGENTS.md de son dossier fait exactement ce pour quoi il a été conçu, le risque tient donc à l'endroit où on le lance. OpenAI et Anthropic conseillent de lancer les agents depuis le dossier du projet, et aucune des deux entreprises n'a commenté l'étude. En août, une autre faille de Claude Code avait permis à une issue GitHub d'atteindre les secrets de la CI, et les deux cas reposent sur le même problème : l'agent ne distingue pas les consignes de l'utilisateur du texte qu'il se contente de lire.
Ce qu'il faut vérifier dans Codex et Claude Code
- Dossier de travail : lancez les agents à la racine d'un projet précis, pas dans Téléchargements ni dans votre dossier personnel.
- Fichiers d'instructions : lisez tout AGENTS.md ou CLAUDE.md que vous n'avez pas écrit avant qu'un agent ne s'en serve.
- Codex : cherchez dans
~/.codex/config.tomldes blocs[mcp_servers.*]inconnus ou unchatgpt_base_urlmodifié. - Claude Code : vérifiez dans le
.claude/settings.jsondu projet qu'aucune adresse d'API inattendue, commeANTHROPIC_BASE_URL, n'y figure. - Confirmations : gardez les demandes de confirmation et le bac à sable activés, et méfiez-vous de tout fichier qui demande à l'agent de les désactiver.
Si un agent a pu suivre un tel fichier, le supprimer ne suffit pas : les réglages modifiés par l'agent restent en place. Retirez-les à la main et remplacez vos jetons, car un jeton qui a fuité fonctionne comme une connexion active. Selon Forever, la présence de function-color parmi les paquets installés signifie que la machine doit être considérée comme compromise.