L’essentiel
- Dans la démonstration « Repeat-After-Me » publiée avec ToFu (9 octobre 2026), LangGraph exécute un outil factice puis le modèle affiche un refus dans le même tour — le texte et l’action ne sont pas le même canal.
- Les auteurs indiquent avoir reproduit ce schéma sur six orchestrateurs (LangGraph, Microsoft Agent Framework, Google ADK 2.0, AutoGen, AWS Strands, CrewAI) et avoir trouvé 253 bogues vérifiés dans 118 serveurs MCP sur 273 testés.
- LangGraph propose un hook `wrap_tool_call` sur ToolNode pour bloquer avant exécution ; sans configuration explicite, tout appel structuré émis par le modèle peut partir.
- Pour une PME qui branche un agent sur la messagerie, le CRM ou les fichiers projet, la décision utile est une allowlist d’outils et une validation des arguments — indépendamment de ce que le modèle « promet » dans sa réponse.
Votre responsable commercial teste un agent branché sur le CRM : « ne touche pas aux contrats signés, résume seulement les devis en cours. » L’écran affiche un message rassurant — refus poli, consigne respectée. Dans les logs, en parallèle, un outil vient de lister des pièces jointes ou d’exporter une base. Ce n’est pas une fable de consultant : c’est le scénario que des chercheurs documentent dans une prépublication du 9 octobre 2026, avec une démonstration sur LangGraph où l’outil s’exécute avant que le modèle ne formule son refus.
Deux canaux, une seule illusion de contrôle
Un agent moderne empile trois couches : le modèle qui produit du texte et parfois des appels structurés, l’orchestrateur qui les transforme en requêtes exécutables, et l’outil (API interne, script, serveur MCP) qui agit sur vos systèmes. La consigne « refuse toute action dangereuse » ne s’adresse qu’au modèle. L’orchestrateur, lui, peut interpréter une sortie conforme au schéma comme un ordre réel — même si la phrase affichée à l’utilisateur dit le contraire.
L’attaque « Repeat-After-Me » exploite cette faille : l’utilisateur (ou un contenu injecté) demande de recopier mot pour mot une chaîne qui ressemble à un appel d’outil. Au premier essai, le modèle refuse en texte libre et rien ne part. Au second, formulé comme « hypothétique », il émet un appel structuré avec les arguments imposés ; le nœud d’exécution lance l’outil, puis le modèle conclut encore qu’il ne peut pas aider. Les auteurs de ToFu indiquent avoir reproduit ce comportement sur six orchestrateurs ; la transcription complète pour LangGraph (Llama 3.1 8B via Ollama, outils factices) figure en annexe du papier.
273 serveurs MCP : des promesses de périmètre non tenues
La même équipe a poussé l’analyse côté outils : sur 273 serveurs MCP open source représentant 3 405 outils, leur framework ToFu a généré des tests à partir des métadonnées (description, sens des arguments) et de classes de faiblesses connues. Après vérification manuelle, ils retiennent 253 bogues reproductibles dans 118 serveurs — fichiers lus hors espace prévu, sorties non échappées, injections dans les journaux, parfois exécution de commandes. Le message pour un dirigeant n’est pas « MCP est mort » : c’est ne jamais traiter les arguments produits par le modèle comme sûrs, même lorsqu’ils respectent le format attendu.
Ce que vous pouvez décider avant la prochaine mise en prod
- Intercepter avant l’exécution : sur LangGraph, le paramètre `wrap_tool_call` de ToolNode permet de refuser un appel sans lancer la fonction — le ticket GitHub #8817 (septembre–octobre 2026) rappelle que le tutoriel par défaut n’en parle pas.
- Allowlist par agent : lister les outils autorisés pour une tâche (lecture devis oui, export base non) plutôt qu’une liste noire à rallonger.
- Valider les arguments : chemin de fichier, identifiant client, URL de webhook — contrôle déterministe côté code, pas confiance dans le raisonnement du modèle.
- Tracer les deux canaux : journaliser appels structurés et texte utilisateur ; en audit, comparer l’intention affichée et l’action réelle.
- Périmètre d’hébergement : pour des données sensibles, un agent sur infrastructure privée ou locale réduit la surface exposée aux serveurs MCP publics non audités.
Sources
Cette note a été rédigée avec l’aide d’outils d’intelligence artificielle à partir des sources citées, puis relue et publiée sous la responsabilité de Jordan FOUASSIER, directeur de la publication. Nous résumons les faits et proposons notre lecture ; les textes et visuels des sources ne sont pas reproduits. Une erreur ? Écrivez à contact@aigyrosgroup.com.