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. Pour un script passé d'un shell à un autre, voir la leçon sur les commandes shell.
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.
Un dossier temporaire par agent
Des agents lancés en parallèle qui partagent un dossier temporaire s'écrasent leurs scripts et leurs rendus. Un agent ne voit ni les fichiers temporaires des autres, ni les corrections faites hors de son brief : il peut valider du périmé. Le brief nomme donc un dossier propre à l'agent pour ses scripts et ses rendus, et après chaque passe sur un fichier que le parent a corrigé, relancez le grep des formulations retirées.
Ce que les outils d'écriture refusent
Depuis octobre 2026, Edit et NotebookEdit refusent un fichier dans un encodage ancien comme Windows-1252 ou Shift-JIS ; Write peut remplacer un tel fichier, mais il enregistre le nouveau contenu en UTF-8 et l'encodage d'origine est perdu : convertissez-le d'abord, le refus d'Edit est un signal et non une panne. Read ne lit plus en texte les fichiers binaires comme .xlsm, .parquet, .epub ou .heic.
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.
- Des agents parallèles ont chacun leur dossier temporaire, Edit et NotebookEdit refusent les fichiers en encodage ancien, et Write les remplace en UTF-8, ce qui perd l'encodage d'origine.
- 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
- Claude Code, référence des outils : Edit et NotebookEdit refusent les encodages anciens consultée le 2026-10-24
- Journal de Claude Code : Write et encodages refusés, Read et fichiers binaires consultée le 2026-10-24