Comment empêcher Claude Code d'inventer des réponses quand il ne sait pas (Configuration exacte incluse)

@0x_rody
ANGLAISil y a 1 mois · 06 juin 2026
346K
256
29
8
1.2K

TL;DR

Ce guide propose un cadre complet en 4 couches pour empêcher Claude Code d'inventer des fonctions ou des tests en mettant en œuvre des règles d'honnêteté strictes, des protocoles de vérification et des hooks de linter automatisés.

Claude vous ment en face tous les jours. Des fonctions inventées, des imports bidons, des « tests passent » alors que rien n'a été exécuté. La solution est une configuration en 4 couches qui rend le mensonge coûteux.

Claude vous dit que le bug est corrigé. Deux heures plus tard, vous découvrez que la fonction qu'il a appelée n'a jamais existé.

La plupart des développeurs apprennent à tout revérifier et à blâmer le modèle. La vraie solution attrape chaque mensonge avant qu'il ne quitte votre machine.

Voici la configuration complète pour l'honnêteté 👇

rody - inline image

Pourquoi Claude invente des choses en premier lieu

Claude est un prédicteur de texte. Quand il ne sait pas quelque chose, il prédit un texte qui semble correct. Des noms de fonctions inventés ressemblent à de vrais noms. Des absurdités livrées avec assurance se lisent comme des vérités livrées avec assurance.

Vous ne pouvez pas faire la différence jusqu'à ce que votre code plante deux heures plus tard d'une manière qui prend encore une heure à déboguer.

La solution n'est pas un modèle plus intelligent. C'est rendre la sortie de Claude vérifiable en temps réel et rendre « je ne sais pas » moins coûteux que de deviner.

4 couches ci-dessous. Ensemble, elles réduisent la fabrication à presque zéro.

rody - inline image

Couche 1 : Les règles d'honnêteté dans CLAUDE.md

La première couche est un ensemble de règles dans CLAUDE.md qui disent exactement à Claude quand admettre l'incertitude et exactement comment. Mettez ceci dans la racine de votre projet :

markdown
1## Règles d'honnêteté (à lire à chaque tour)
2
3Avant d'affirmer qu'une fonction, une classe ou un import existe, vérifiez-le en lisant
4le fichier ou en exécutant un grep. N'inventez jamais de symboles.
5
6Si vous ne pouvez pas vérifier quelque chose, dites explicitement « je n'ai pas vérifié ceci ».
7N'écrivez pas de code qui dépend de l'affirmation non vérifiée.
8
9Si une tâche vous demande d'utiliser une bibliothèque que vous n'avez jamais vue référencée dans ce
10projet, demandez avant de l'ajouter.
11
12Si une tâche implique des tests ou des builds, ne prétendez pas au succès à moins d'avoir
13réellement exécuté la commande de test ou de build dans cette session.
14
15N'inventez jamais de messages d'erreur, de réponses d'API ou de traces de pile. Si vous
16ne les avez pas vus, dites-le.
17
18Quand vous ne savez vraiment pas, la bonne réponse est « je ne sais pas » ou
19« je dois d'abord vérifier ». Les deux sont meilleurs qu'une supposition confiante.

Ces règles semblent évidentes.

Elles ne le sont pas, car par défaut Claude est optimisé pour paraître utile, et « je ne sais pas » semble inutile à moins que vous ne lui donniez une permission explicite.

La dernière ligne est la plus importante. C'est la licence « je ne sais pas », et la plupart des gens ne l'accordent jamais.

Couche 2 : Le modèle vérification-avant-écriture

La deuxième couche force Claude à vérifier avant d'écrire. Ajoutez ceci à CLAUDE.md sous les règles d'honnêteté :

markdown
1## Protocole de vérification
2
3Avant d'écrire ou de modifier du code qui utilise un symbole (fonction, classe, type,
4constante), faites l'une des choses suivantes :
5
61. Lisez le fichier où il est défini et confirmez la signature
72. Exécutez `grep -r "nomDuSymbole" .` ou utilisez l'outil Glob pour le trouver
83. Vérifiez package.json, requirements.txt, Cargo.toml, ou l'équivalent pour
9 la dépendance
10
11Si vous sautez la vérification, préfixez le code avec un commentaire :
12`// NON VÉRIFIÉ : Je n'ai pas confirmé que ce symbole existe`
13
14Le mode planifier-puis-exécuter est préféré pour toute tâche touchant plus d'un
15fichier. Utilisez Shift+Tab pour entrer en mode planification avant de commencer.

Cela coûte à Claude quelques appels d'outils supplémentaires par session. Cela vous fait gagner les heures que vous auriez passées à déboguer des appels de fonctions fictifs.

Couche 3 : Les hooks qui attrapent les mensonges en temps réel

La troisième couche est constituée de hooks dans settings.json qui exécutent un vérificateur de type ou un linter chaque fois que Claude écrit un fichier. Si Claude a inventé un import, le vérificateur échoue instantanément, et Claude doit le corriger avant de prétendre que la tâche est terminée.

json
1{
2 "hooks": {
3 "PostToolUse": [
4 {
5 "matcher": "Write(*.ts|*.tsx)|Edit(*.ts|*.tsx)",
6 "hooks": [
7 { "type": "command", "command": "npx tsc --noEmit --pretty false 2>&1 | head -20" }
8 ]
9 },
10 {
11 "matcher": "Write(*.py)|Edit(*.py)",
12 "hooks": [
13 { "type": "command", "command": "ruff check --quiet $file && pyright $file 2>&1 | head -20" }
14 ]
15 },
16 {
17 "matcher": "Write(*.rs)|Edit(*.rs)",
18 "hooks": [
19 { "type": "command", "command": "cargo check --message-format=short 2>&1 | head -20" }
20 ]
21 }
22 ]
23 }
24}

La sortie du hook est renvoyée à Claude comme contexte. Si tsc dit « Impossible de trouver le module 'foo' », Claude le voit immédiatement et corrige l'import fabriqué. Aucun code inventé ne survit à une vérification PostToolUse.

Pour les tâches impliquant des tests, ajoutez un hook Stop qui exécute la suite avant que Claude ne puisse déclarer la session terminée :

json
1"Stop": [
2 {
3 "hooks": [
4 { "type": "command", "command": "npm test 2>&1 | tail -30" }
5 ]
6 }
7]

Maintenant, Claude ne peut pas dire « terminé, les tests passent » sans les avoir réellement exécutés. Le hook les exécute.

Le résultat est renvoyé à Claude. S'ils échouent, Claude doit les corriger ou admettre qu'ils ne passent pas.

Couche 4 : Le sous-agent vérificateur de faits

La quatrième couche est un sous-agent dont le seul travail est de vérifier les affirmations de Claude avant qu'elles ne soient livrées.

Mettez ceci dans .claude/agents/fact-checker.md :

yaml
1---
2name: fact-checker
3description: Utilisez cet agent après que Claude a fait des affirmations sur ce que fait le code, quels tests ont réussi, ou ce qu'une bibliothèque supporte. Invoquez avant tout commit, avant tout résumé destiné à l'utilisateur, et après toute tâche impliquant de nouvelles dépendances.
4tools: Read, Grep, Glob, Bash
5model: sonnet
6---
7
8Vous vérifiez les affirmations, vous n'écrivez pas de code.
9
10Lorsqu'il est invoqué, faites ceci :
11
121. Identifiez chaque affirmation factuelle dans la conversation récente. Exemples :
13 « la fonction X fait Y », « les tests passent », « la bibliothèque Z supporte W »,
14 « cet import est correct ».
15
162. Pour chaque affirmation, vérifiez-la indépendamment :
17 - Affirmations de code : lisez le fichier réel et confirmez
18 - Affirmations de test : exécutez les tests vous-même
19 - Affirmations de bibliothèque : vérifiez le package réel ou sa documentation
20 - Affirmations d'import : confirmez que le package est dans le manifeste des dépendances
21
223. Produisez un rapport :
23 - VÉRIFIÉ : affirmation, preuve (fichier:ligne ou sortie de commande)
24 - FAUX : affirmation, ce qui est réellement vrai
25 - NON VÉRIFIABLE : affirmation, pourquoi vous n'avez pas pu le vérifier
26
27N'acceptez jamais les affirmations « faites-moi confiance ». Ne faites jamais vos propres affirmations. Si vous
28ne pouvez pas vérifier, la sortie correcte est NON VÉRIFIABLE.

Invoquez cet agent avant les commits ou avant de partager les résultats avec votre équipe. Il attrape les mensonges que les 3 autres couches ont manqués.

rody - inline image

La licence « je ne sais pas »

Claude a été entraîné pour être utile, et admettre son ignorance semble inutile. Alors il devine, et la supposition semble correcte.

La solution est d'accorder la permission de ne pas savoir. CLAUDE.md en est la moitié. Votre réaction est l'autre moitié. Récompensez « je n'ai pas vérifié ceci » avec patience et vous obtenez un Claude honnête à chaque session. Punissez-le avec frustration et Claude retourne à ses suppositions.

Pas une configuration, une habitude. La correction la plus sous-estimée de la pile.

Comment savoir si ça fonctionne réellement

Trois signes dans vos sessions quotidiennes.

Claude demande avant d'ajouter des dépendances. « Dois-je ajouter X ou utiliser la bibliothèque standard ? » au lieu d'un npm install silencieux.

Claude référence fichier:ligne quand il parle de code existant. « validateToken dans src/auth/middleware.ts:47 fait Y » au lieu de « la fonction validateToken fait Y. »

tsc et votre linter arrêtent de crier. Les hooks attrapent les rares fabrications instantanément et Claude s'auto-corrige, donc au moment où vous regardez, les mensonges ont disparu.

Vous ne voyez pas ces signes après un jour ou deux ? Une couche n'est pas chargée. Généralement CLAUDE.md, mauvais emplacement ou mauvais nom.

rody - inline image

Erreurs courantes qui maintiennent Claude dans le mensonge

CLAUDE.md est trop long. Claude lit la première partie et parcourt le reste. Placez les règles d'honnêteté dans les 50 premières lignes.

Les hooks enregistrent en silence. Si la sortie n'atteint pas stdout, Claude ne sait pas qu'il a menti. Assurez-vous que la sortie du hook retourne à la session.

Vous sautez le mode planification. C'est là que Claude expose les mauvaises hypothèses avant d'écrire. Sautez-le et vous sautez le moment le moins coûteux pour attraper les mensonges.

Vous n'appelez pas le vérificateur de faits. Un sous-agent ne fonctionne que si vous l'invoquez réellement. Faites de @fact-checker une partie de votre flux de commit.

Vous réagissez mal au « je ne sais pas. » Punissez l'honnêteté une fois et Claude retourne à ses suppositions. Les 3 autres couches ne tiennent pas sans celle-ci.

rody - inline image

L'audit d'honnêteté en 5 minutes

1 minute : copiez les règles d'honnêteté et le protocole de vérification de CLAUDE.md dans la racine de votre projet.

1 minute : copiez le bloc de hooks dans ~/.claude/settings.json ou .claude/settings.json.

2 minutes : créez .claude/agents/fact-checker.md avec le modèle ci-dessus.

1 minute : exécutez une tâche que vous vérifieriez normalement deux fois. Surveillez la sortie de tsc revenant à Claude. Confirmez que Claude dit « vérifié » ou « je n'ai pas vérifié ceci » explicitement.

Terminé. La fabrication passe de « une session sur deux » à « rare et immédiatement attrapée. » Le modèle n'est pas devenu plus intelligent. Votre configuration, oui.

Merci d'avoir lu !

rody - inline image
Enregistrer en un clic

Lire les articles viraux en profondeur avec l’IA de YouMind

Enregistrez la source, posez des questions ciblées, résumez l’argument et transformez un article viral en notes réutilisables dans un seul espace de travail IA.

Découvrir YouMind
Pour les créateurs

Transformez votre Markdown en un article 𝕏 impeccable

Quand vous publiez vos propres textes longs, la mise en forme 𝕏 des images, tableaux et blocs de code est pénible. YouMind transforme un brouillon Markdown complet en un article 𝕏 impeccable, prêt à publier.

Essayer Markdown vers 𝕏

D'autres patterns à décoder

Articles viraux récents

Explorer plus d'articles viraux