Pièges d'écriture : fichiers, edits parallèles et livrables perdus
Un rapport de succès écrit par un sous-agent ne prouve rien sur l'état réel des fichiers, puisqu'il démarre dans un contexte isolé sans accès à ce que l'agent principal a déjà lu ou écrit, et la seule preuve fiable reste un diff vérifié après coup, pas le texte du rapport.
Un sous-agent démarre avec un contexte isolé et neuf à chaque appel, sauf pour un fork, qui hérite au contraire de toute la conversation en cours. Il ne voit ni l'historique de la conversation principale, ni les skills déjà invoquées, ni les fichiers que l'agent principal a déjà lus. Cette isolation ne l'empêche pas de consulter lui même le disque : il dispose des mêmes outils de lecture et d'exécution que la conversation principale, et peut très bien lancer un git diff ou relire un fichier pour vérifier son propre travail. Ce qui manque, c'est un regard extérieur : un rapport de succès reste un texte produit par le même agent qui vient d'agir, jamais une vérification indépendante, et rien ne garantit qu'il corresponde à une écriture réelle sur le disque tant que personne d'autre ne l'a contrôlé.
Le rapport de texte n'est pas la preuve
La bonne pratique documentée consiste à demander un diff vérifiable plutôt que de faire confiance au texte du rapport. Un diff montre les lignes réellement changées dans un fichier réel, un rapport de succès n'est qu'une phrase générée par le même agent qui affirme avoir réussi.
mkdir -p /tmp/demo-diff
echo "version initiale" > /tmp/demo-diff/avant.txt
echo "version modifiee" > /tmp/demo-diff/apres.txt
diff /tmp/demo-diff/avant.txt /tmp/demo-diff/apres.txt
# resultat : la ligne modifiee apparait, la preuve est dans le diff, pas dans une phrase
Un rapport en texte affirmant qu'apres.txt a été mis à jour n'apporte rien de plus que ce diff, et sans lui, rien ne distingue une écriture réelle d'une phrase inventée. Un script en une seule ligne qui contient des guillemets inversés se heurte à un piège voisin : le shell qui l'exécute peut les interpréter avant que la commande n'atteigne sa cible, et ce qui s'affiche ensuite ressemble à un succès alors que la commande réellement lancée était tronquée. Relire la commande telle qu'elle a été reçue par le shell, pas seulement telle qu'elle a été tapée, répond au même besoin de preuve que le diff.
Deux écritures sur le même fichier ne sont jamais indépendantes
Deux modifications envoyées ensemble sur le même fichier, que ce soit par deux sous-agents ou par deux appels de l'outil d'édition dans le même tour, s'appliquent l'une après l'autre sur le contenu que l'outil trouve au moment où il agit, jamais sur deux copies séparées fusionnées ensuite. La seconde modification peut donc échouer à trouver le texte qu'elle cherchait, parce que la première l'a déjà changé. Envoyer les deux modifications en séquence, en relisant le fichier entre les deux, réduit ce risque et rend chaque étape vérifiable pour elle même.
Le même principe de preuve vérifiable s'applique à un livrable long : un contenu de plusieurs paragraphes qui n'existe que dans la réponse affichée disparait avec elle dès que la conversation continue. L'écrire dans un fichier réel avant de l'afficher, comme pour une sortie structurée en mode headless, garantit qu'il reste consultable indépendamment du fil de conversation, exactement comme un diff reste lisible indépendamment du rapport qui l'accompagne.
Rapport de succès contre preuve vérifiable
| Preuve qu'une écriture a réellement eu lieu | Ce qui la produit | Ce qu'elle montre | Comment la vérifier |
|---|---|---|---|
| Rapport de succès en texte | Générée par le même agent qui affirme avoir réussi | Une phrase affirmant que le fichier a été mis à jour | Rien à vérifier, la phrase se prend elle même pour preuve |
| Diff du fichier réel | Produit par une commande qui lit le contenu du fichier sur le disque | Les lignes exactes qui ont changé, ou aucune ligne si rien n'a changé | Se relit indépendamment de ce que l'agent affirme |
Un développeur demande à un sous-agent d'ajouter une ligne de configuration dans un fichier, reçoit une réponse annonçant que la modification est faite, puis ouvre lui même le fichier sur le disque et lit son contenu.
Écrivez en une phrase ce que cette situation établit, et en une phrase ce qu'elle n'établit pas.
Ce que cela établit : Cette situation établit que le développeur a pris le geste de relire le fichier sur le disque plutôt que de s'arrêter à la réponse du sous-agent.
Ce que cela n’établit pas : Elle n'établit pas si la ligne de configuration attendue est réellement présente dans le fichier, puisque le contenu lu n'est pas décrit.
Les trois calibrages faux les plus courants
- Trop large Cette situation établit que la modification demandée au sous-agent a bien été appliquée dans le fichier.
- Trop étroit Cette situation n'établit rien du tout, puisqu'un seul fichier a été relevé sur un seul poste.
- À côté Cette situation montre que le fichier concerné contenait déjà plusieurs lignes de configuration avant même l'envoi de la consigne.
- Un sous-agent démarre avec un contexte isolé, sans accès à l'historique de la conversation principale, aux skills déjà invoquées ni aux fichiers déjà lus par l'agent principal.
- Un sous-agent peut lire le disque comme la conversation principale, mais son rapport reste un texte produit par le même agent qui a agi, jamais une vérification indépendante, d'où le risque qu'il ne corresponde à aucune écriture réelle.
- Un diff des lignes réellement changées constitue une preuve vérifiable, un rapport en texte affirmant un succès n'en est pas une.
- Deux modifications envoyées ensemble sur le même fichier s'appliquent l'une après l'autre sur le contenu trouvé au moment de l'action, jamais sur deux copies fusionnées ensuite.
- Un livrable long écrit uniquement dans la réponse affichée disparait avec elle, l'écrire dans un fichier réel le rend consultable indépendamment du fil de conversation.
Ouvrez un fichier que vous avez récemment demandé à un sous-agent ou à un outil d'écrire, lancez un diff ou une relecture directe de son contenu sur le disque, et confirmez que ce que vous y trouvez correspond exactement au rapport de succès reçu.
Chaque affirmation datable de cette leçon renvoie ici au texte public qui la porte. Une source qui ne s’ouvre pas ne prouve rien.
- Claude Code, sous-agents, contexte isolé et fraîcheur consultée le 2026-09-02