SevenTnewS

Sécurité du terminal

Le piège « $HOME » : les agents de codage IA ont besoin de sandboxes, pas de prompts « allow ? »

Le sandbox terminal de Qoder bloque près d'une centaine de commandes d'agents destructrices chaque jour. Les cas derrière ces blocages expliquent pourquoi les prompts « allow ? » échouent : un dossier de projet nommé $HOME, un nettoyage qui ciblait /root, et un clic qui a failli coûter un disque entier.

Emmanuel Fabrice Omgbwa Yasse Assisté par IA

2026-08-13 · 7 min de lecture

Le piège « $HOME » : les agents de codage IA ont besoin de sandboxes, pas de prompts « allow ? »

Un million de commandes terminal passent chaque jour par le sandbox de Qoder, selon les chiffres de l'équipe. Un peu plus de dix mille sont signalées ; près d'une centaine touchent ce qu'elles ne devraient pas toucher, assez en une seule ligne pour détruire une semaine de travail d'un développeur.

Les hallucinations peuvent confondre un répertoire de projet avec un dossier temporaire ; des incohérences d'environnement peuvent rediriger un nettoyage vers un chemin système. Le compte-rendu de Qoder documente les deux cas et soutient que lorsqu'un agent exécute des commandes à votre place, un prompt « allow ? » ne suffit pas.

Un million de commandes par jour, et une centaine de quasi-accidents

Le premier cas est un nettoyage Windows qui a mal tourné. L'agent a exécuté cmd /c "rmdir /s /q "C:\Users\...\SuperMarioGame\src"". Intention : nettoyage de fichiers. Le modèle a traité le répertoire source du projet comme jetable, et rmdir /s /q supprime récursivement sans confirmation. Cela ressemble à une opération de développement normale, et c'est ce qui le rend dangereux.

Le deuxième cas est une incohérence d'environnement, sans attaquant. Un développeur a demandé à l'agent d'exécuter un script de nettoyage de build contenant rm -rf "$OUTPUT/root". Localement, $OUTPUT pointait vers des artefacts de build ; quand l'agent l'a exécuté, la variable n'avait pas été chargée, $OUTPUT s'est développée en chaîne vide, et la commande est devenue rm -rf "/root". Le sandbox a refusé l'écriture : /root n'était pas dans la liste autorisée de l'espace de travail.

Le piège « $HOME » : quand « allow ? » ne protège rien

Il y a un troisième cas que l'équipe Qoder garde épinglé au mur. Un développeur a demandé à l'IA de nettoyer les fichiers temporaires à la racine du projet. Le projet contenait un sous-répertoire nommé $HOME. Le modèle a généré rm -rf "$HOME" : à l'œil, une suppression interne au projet. Au moment où le shell l'a traitée, $HOME s'est développée vers le véritable répertoire personnel de l'utilisateur.

La boîte de dialogue de confirmation est bien apparue. Le développeur a bien cliqué sur confirmer, croyant approuver la suppression d'un dossier du projet. Le disque a failli être entièrement effacé. Le système d'exploitation ne démarrait plus.

Cette histoire est l'argument. Une boîte de dialogue ne peut montrer que ce que l'utilisateur pense qu'une commande signifie ; le shell exécute ce que la commande signifie après expansion. Aucun bouton ne comble cet écart. Les listes noires comparent des chaînes, et les chaînes peuvent être contournées : cmd /c "rmdir /s /q" fait le même travail que rm -rf sans lui ressembler, et un script enveloppant masque complètement le nom de la commande. Les dialogues remettent la décision à quelqu'un qui a cliqué sur des centaines de prompts et clique surtout par réflexe. Une fois approuvée, une commande s'exécute avec tous les privilèges de l'utilisateur : fichiers, réseau, environnement, ressources système.

Cursor, Codex, Claude Code : l'industrie dépasse les dialogues

Qoder a étudié la sécurité des terminaux des principaux outils de codage IA. L'exécution dans le terminal est le minimum requis ; le sandboxing rattrape son retard ; la question ouverte est le repli quand il échoue. Cursor prend en charge l'exécution sandboxée avec des politiques réseau, de système de fichiers et de liste autorisée dans sandbox.json, en natif sur macOS et Linux, Windows s'appuyant sur WSL2. Codex expose des politiques au niveau de l'OS pour les écritures de fichiers, le réseau et les approbations, une surface orientée CLI pour les utilisateurs avancés. Claude Code utilise Seatbelt sur macOS et bubblewrap sur Linux pour réduire les invites de permission.

OutilMécanisme d'isolationSituation WindowsAccent de conception
CursorRéseau, système de fichiers et politiques de liste autorisée via sandbox.jsonWSL2 requisNatif sur macOS et Linux
CodexPolitiques au niveau de l'OS pour écritures de fichiers, réseau, approbationsSurface politique orientée CLIUtilisateurs avancés, automatisation
Claude CodeSeatbelt sur macOS, bubblewrap sur LinuxNon détaillé dans l'étudeMoins de prompts, exécution bornée
Qodersandbox-exec + Seatbelt, bubblewrap, jetons restreints Rust personnalisésNatif, depuis Windows 7Pipeline à quatre couches plus AI Review

L'enseignement : les dialogues de permission ne sont plus à eux seuls le contrôle principal. Ce qui distingue les outils, c'est la couverture des plateformes et la fluidité du repli vers la confirmation de l'utilisateur. Qoder intègre le mécanisme au niveau de l'OS le plus approprié pour chaque plateforme afin que la protection fonctionne sans que les utilisateurs aient à apprendre l'implémentation.

Quatre couches, puis un second regard

Avant exécution, chaque commande passe par un pipeline : évaluation des risques par LLM, analyse multi-plateforme, enveloppe sandbox, isolation OS. Un LLM juge l'intention au moment de la génération ; trois analyseurs AST gèrent PowerShell, Bash/Zsh et CMD, décomposant les commandes en noms et listes d'arguments structurés. Une liste intégrée signale rm, format, del, rmdir.

Les listes noires perdent leur excuse au niveau de l'AST. Une injection de prompt pourrait faire générer au modèle whoami `rm -rf /`. À l'œil, c'est whoami ; l'analyseur extrait deux noms de commandes et attrape le rm entre backticks. L'analyse structurelle voit ce que la correspondance de chaînes ne peut pas voir.

Mais « cette commande est-elle dangereuse ? » n'est pas la question qui décide de l'expérience développeur. La question est de savoir quoi faire. Une commande signalée n'est pas nécessairement destructive : supprimer un fichier commité et suivi par git est récupérable ; supprimer un chemin construit à partir d'une variable non résolue ne l'est pas. Qoder a donc livré une couche AI Review, une seconde invocation de modèle légère qui juge la conséquence, pas l'intention, à deux endroits. À l'entrée du sandbox, elle reçoit le statut git du dépôt comme contexte en langage naturel pour raisonner sur la récupérabilité ; sûr signifie exécution sandboxée, sinon une boîte de dialogue de confirmation. À la porte d'escalade de permission, lorsque l'exécution sandboxée a échoué et que le modèle demande à relancer avec les pleins pouvoirs, elle est plus conservatrice et vérifie uniquement si des fichiers système hors de l'espace de travail seraient endommagés ; autorisé, sinon une autre boîte de dialogue.

Les deux revues s'exécutent à basse température, renvoient du JSON avec un verdict et une raison, et expirent après 10 secondes avec trois tentatives. L'asymétrie est intentionnelle : lorsque l'interrupteur est désactivé, l'entrée autorise par défaut tandis que l'escalade bloque par défaut ; injoignable, tout bloque. Une boîte de dialogue supplémentaire est bon marché ; une commande destructive manquée ne l'est pas.

Windows a été la partie difficile

Sur macOS, Qoder réutilise sandbox-exec, générant des politiques Seatbelt à partir d'une base de refus par défaut. Git a ajouté des cas limites : accès en écriture aux fichiers temporaires et aux périphériques, et un .git en lecture seule afin que git log et git diff fonctionnent tandis que git commit et git push exigent une escalade. Le surcoût de démarrage est de 43 à 72 millisecondes, moins de 5 % sur des commandes à l'échelle de la seconde. Linux utilise bubblewrap : système de fichiers racine en lecture seule, chemins sensibles recouverts de tmpfs vide, réseau coupé avec un seul drapeau.

Windows n'a pas d'équivalent prêt à l'emploi, et Qoder appelle cela la partie la plus difficile du projet. L'équipe a évalué 15 technologies d'isolation, de Hyper-V et Windows Sandbox à AppContainer et Sandboxie ; peu correspondent aux contraintes d'un IDE : fréquence d'invocation élevée, latence de démarrage, compatibilité ascendante. Le résultat est une solution Rust personnalisée, fonctionnant depuis Windows 7 avec un démarrage à l'échelle de la milliseconde, utilisant des jetons restreints afin que les processus enfants écrivent uniquement vers des chemins autorisés. AppContainer a perdu : isolement plus fort, mais autorisation dynamique difficile et Windows 8 et ultérieur uniquement. Deux séries de tests ont montré en moyenne 7,7 % de surcoût, concentré sur le démarrage des processus ; les lancements PowerShell étaient environ 19 % plus lents, soit environ 4,8 secondes de plus par invocation.

Le sandboxing comme infrastructure d'agents

Le changement le plus important est l'usage du sandbox. Les agents servaient à générer du code, le risque résidant dans la revue de code. Désormais, ils exécutent des commandes, modifient des fichiers, invoquent des compétences et accèdent au réseau ; l'IDE doit donc posséder la sécurité d'exécution. Qoder présente le sandbox terminal comme une infrastructure pour l'environnement d'agent : une chance de moins pour un développeur solo de supprimer un projet ; pour les équipes, un point de départ pour la gouvernance et l'audit. La feuille de route : surcharges de politique définies par l'utilisateur et par commande, distribution en entreprise, rapports de journaux d'audit.

Les autres outils d'agents d'Alibaba vont dans le même sens. Qoder 1.0 a abandonné l'IDE à espace de travail unique au profit de worktrees isolés afin que les tâches parallèles cessent d'entrer en collision, et son moteur mémoire à portée limitée a réduit les jetons d'entrée de 40 % selon les données A/B d'Alibaba. Anolisa v0.3 bloque les instructions malveillantes cachées dans les entrées externes, analyse le code généré par l'agent avant son exécution et signe cryptographiquement les compétences tierces. Le pari : la prochaine compétition pour les agents de codage se jouera sur le processus, pas sur la performance brute du modèle.

L'essentiel de la tech en 3 minutes chaque matin

Un email, chaque jour ouvré, avec ce qui compte vraiment en IA et en tech.