Menu

Aucun menu défini dans le customizer.

Actus AutomatiséesActus TechAnthropicClaude CodedeveloppementSciencestutoriels-guides

Fuite Claude Code – 6 trucs à piquer pour vos hooks

Actualités Automatisées

Fuite Claude Code – 6 trucs à piquer pour vos hooks

🕒 Publié le : 01/04/2026 à 13:00
 |  ✍️ Auteur : Korben
 |  📚 Source : Les news de Korben

Le code source de Claude Code a fuité hier, et au-delà du buzz, y’a, je trouve, quelques leçons concrètes à tirer de tout ça.

Alors rassurez-vous, je vais pas vous balancer du code TypeScript à copier-coller (on n’est pas des cochons), ni des leçons de morale sur ce qu’on peut ou pas pousser sur un dépôt Git, mais plutôt vous lister des patterns d’architecture / bonnes pratiques que vous pouvez implémenter dès maintenant dans votre fichier settings.json via le système de
hooks de Claude Code
.

Je reste vague techniquement, volontairement pour 2 raisons. D’abord parce qu’il y a eu fuite de code, donc je peux pas poster du code propriétaire ici. Et ensuite parce que chaque projet / boite à outil qu’on se crée dans Claude Code ou ailleurs est différente, donc ce sera à vous (ou à Claude en fait) d’adapter chacune de ces bonnes pratiques.

Concrètement, tout passe par le fichier .claude/settings.json de votre projet (ou ~/.claude/settings.json pour du global). Dedans, vous déclarez des hooks, c’est-à-dire des scripts .cjs ou .sh qui se déclenchent automatiquement à des moments précis : avant qu’un outil s’exécute (PreToolUse), quand vous tapez un message (UserPromptSubmit), après un commit (PostToolUse), etc.

Le script reçoit du JSON en stdin, fait son boulot, et renvoie un code de sortie : 0 pour laisser passer, 2 pour bloquer. Pas besoin de l’API Claude, pas besoin de tokens, ça tourne en local sur votre machine. Hé bien tout ce que vous allez lire ci-dessous, ce sera à vous de l’implémenter dans des scripts de ce type.

Et le plus simple pour ça, c’est de donner les parties de mon article qui vous intéressent à votre propre Claude Code pour qu’il aille lui-même faire les scripts cjs / sh et les bons appels de hooks dans le settings.json. Pourquoi se prendre la tête ?

Et encore une fois, j’insiste, il s’agit de concepts d’ingénierie logicielle, et pas de code propriétaire appartenant à Anthropic.

La première bonne pratique c’est le circuit breaker ou disjoncteur en français…

En gros, quand vos scripts JavaScript appellent des APIs genre l’endpoint chat/completions d’OpenAI ou generateContent de Gemini, ça peut parfois ne pas répondre, parce que la vie quoi… ^^

Et malheureusement, quand cela arrive, votre code continue de marteler l’endpoint en boucle, ce qui fait que vous cramez des tokens pour rien. Le fix est pourtant très simple : Après 3 échecs consécutifs, on coupe, et on passe au fallback. Netflix avait popularisé ça avec leur librairie
Hystrix
y’a 10 ans, et c’est ce type de protection qu’on retrouve aujourd’hui dans Claude Code. Concrètement, c’est un module Node.js de 40 lignes avec un compteur et un état ouvert/fermé et comme ça, fini les retry storms !

Deuxième pattern : le scanner de secrets en pre-commit.

Un git commit qui embarque une clé API dans un .env, ça arrive trop souvent (demandez à Anthropic et leur fichier .map de 60 Mo ^^). Le hook PreToolUse permet heureusement d’intercepter chaque git commit AVANT exécution. Votre script parcourt alors les fichiers stagés via git diff --cached, cherche les patterns sk-ant-api, ghp_, AKIA, -----BEGIN RSA PRIVATE KEY----- et renvoie un exit 2 pour bloquer.

Perso, j’ai dans ma boite à outil IA, 18 regex dans un fichier .claude/hooks/secret-scanner.cjs qui couvrent Anthropic, OpenAI, AWS, GitHub, Slack, Stripe et les JWT. Par contre, attention aux faux positifs car un fichier contenant “sk-ant-api” dans un commentaire, ça bloquera tout. Ça m’est déjà arrivé et heureusement, l’IA est assez maligne pour comprendre d’où vient le blocage et éventuellement passer outre si ce n’est pas justifié.

Et troisième truc sympa : la détection de frustration.

En effet, un hook UserPromptSubmit se déclenche quand vous tapez un message de rageux. Ainsi, si votre prompt contient “putain”, “ça marche pas” ou “wtf”, le hook injecte via stdout un contexte qui dit à Claude d’aller droit au but. Comme ça, y’a plus de blabla et on part direct sur une solution concrète.

Et c’est pareil pour “continue” ou “finis” qui injecte “reprendre sans résumer” automatiquement. Franchement, c’est 30 lignes de JavaScript rikiki à mettre dans .claude/hooks/frustration-detector.cjs et ça change carrément la vie quand vous êtes en mode debug à 2h du mat avec un café dans la main gauche et un œil qui se ferme tout seul en tremblant !

Quatrième bonne pratique : les tags @[MODEL] dans vos skills.

Car vous le savez, certaines règles que vous avez mis en place existent uniquement à cause d’un biais du modèle actuel. Genre, Opus 4.6 qui colle ces putains de tirets cadratins (Unicode U+2014) partout. Du coup, ça oblige les gens à mettre dans leurs skills une règle du genre “0 em-dash”. Sauf que le jour où Sonnet 5 ne les utilisera plus, cette règle ce sera du bruit inutile.

Alors en taguant @[OPUS-4.6] dans un commentaire HTML, vous pourrez ensuite faire facilement un grep -r "@[OPUS" quand vous changez de modèle. C’est du tracking de dette technique pour le prompt engineering, quoi… et perso, je n’y avais pas pensé avant.

Cinquième pattern : les seuils numériques.

Votre “Fais des fonctions courtes” dans un CLAUDE.md, ça ne veut rien dire pour un agent et malheureusement, la plupart des gens écrivent encore “sois concis” ou “toi faire code propre” sans aucun chiffre alors qu’un “Max 50 lignes par fonction, couverture tests ≥ 80%, 0 warning ESLint” c’est vachement plus efficace car vérifiable par un script.

Enfin, dernier pattern : la consolidation mémoire.

Anthropic a mis en place un système nommé autoDream qui tourne pendant l’inactivité de Claude Code pour nettoyer la mémoire. Il vire les doublons, résout les contradictions, vérifie que les fichiers existent encore. Et même s’il ne le réclame pas parce qu’ils n’ont pas de bouche pour vous parler, vos CLAUDE.md de 200 lignes et vos JSON de 70 Ko ont besoin du même traitement ! Donc il faut que vous ajoutiez une phase genre “dream” en bash ou Node.js à la fin de vos workflows, comme ça, plutôt que de tout garder, le script scan le répertoire ~/.claude/, trie les entrées par date, et fusionne les doublons. C’est comme la consolidation pendant l’inactivité, mais en 5 secondes sur un Apple M4.

D’ailleurs, la communauté n’a pas perdu de temps. Un développeur a catalogué les
88 feature flags
planqués dans le code, dont 54 qui compilent proprement (les autres dépendent de modules internes d’Anthropic). Et un autre a reconstitué
8 diagrammes d’architecture
complets du pipeline : cycle de vie d’une requête, système de permissions, orchestration multi-agents… C’est la meilleure doc technique qui existe sur le fonctionnement interne de Claude Code, et elle ne vient pas d’Anthropic ^^

Architecture globale de Claude Code reconstituée par la communauté

Voilà et toutes ces pratiques, ça repose sur les 25 événements du système de hooks (PreToolUse, PostToolUse, UserPromptSubmit, Stop…) avec 3 types de handlers : command pour les scripts shell, prompt pour une évaluation LLM, et agent pour une vérification multi-étapes.

Après, si l’un de vos scripts plante comme une merde, le hook laissera passer des choses, donc pensez bien à tester chaque retour de script avec un echo '{}' | ./mon-hook.sh && echo $? avant de déployer.

Et voilà ! Je vous invite à lire
mon article sur la fuite
pour plus d’infos.

Avatar de Krigs

À propos de l'auteur

https://github.com/Krigsexe

Voir tous les articles de Krigs

Leave a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Profil Gravatar