Claude Code mods : l'agent se réécrit en 80 lignes, sans sandbox

Anthropic ouvre les entrailles de Claude Code aux fonctions TypeScript. J'ai passé deux soirées dedans, voici ce qui tient et ce qui pique.

Terminal Claude Code affichant un panneau personnalisé généré par un mod TypeScript

Le 1er octobre, Anthropic a discrètement transformé Claude Code en plateforme programmable : les « mods », des fonctions JavaScript ou TypeScript qui tournent à l'intérieur même de la session et peuvent réécrire un prompt avant qu'il parte au modèle, bloquer un appel d'outil ou redessiner l'interface. J'ai passé deux soirées dessus depuis l'annonce. Si vous vivez dans un terminal avec Claude Code — ou si votre équipe y vit —, c'est la plus grosse évolution de l'outil depuis les plugins. Et le plus gros sujet de sécurité aussi.

Des hooks aux mods : ce qu'Anthropic a changé le 1er octobre

Jusqu'ici, pour intervenir dans le cycle de vie de Claude Code, on avait les settings hooks : des scripts shell appelés événement par événement, qui dialoguent en stdin/stdout et oublient tout entre deux appels. Les mods changent de catégorie. D'après le guide officiel d'Anthropic, « un mod est un petit fichier JavaScript ou TypeScript qui s'exécute dans votre session Claude Code ». Le module se charge une fois, garde un état, et reçoit les événements en direct : session.start, turn.complete, prompt.submit, tool.call, command.run, ui.render.

Chaque hook reçoit trois arguments : $ (l'API des mods), e (les données de l'événement) et next (le middleware suivant). Si vous avez déjà écrit du Express, vous êtes chez vous. Un mod peut observer sans rien toucher, réécrire les données avant qu'elles continuent leur chemin, ou répondre à la place du traitement normal. Anthropic mange sa propre cuisine : la commande /diff est désormais livrée… comme un mod, parmi quatre mods intégrés d'origine.

Mon premier mod en une soirée : la météo du contexte

Pour tester, j'ai reconstruit une variante du Token Weather d'Anthropic : un bandeau au-dessus du prompt qui affiche l'usage du contexte via $.session.usage(), avec une icône météo qui se dégrade à mesure que la fenêtre se remplit. Environ 80 lignes, hot reload à chaque sauvegarde, pas de redémarrage de session. Honnêtement, c'est la meilleure boucle de dev que j'ai vue sur un outil Anthropic.

Deux galères quand même, pour être complet. D'abord, j'ai stocké mon compteur de tokens dans une variable de module : le hot reload remet ces variables à zéro à chaque rechargement, et j'ai affiché des chiffres faux pendant une bonne heure avant de comprendre qu'il fallait tout passer par $.state. Ensuite, j'ai voulu pousser chaque tool.call vers notre backend d'observabilité en HTTP synchrone : le dispatch d'un hook est limité à une dizaine de secondes, et sur un réseau mou, mes tours de parole se sont mis à ramer. La parade : empiler en local, purger sur session.end.

Que peut toucher un mod Claude Code, exactement ?

L'API $ expose onze familles : ui (panneaux, onglets, boutons, toasts), fs, process, http, model, state, store, clock, tool, command — dont $.command.register() pour créer ses propres commandes slash — et session. Les exemples du dépôt playground d'Anthropic donnent le ton : Blast Radius intercepte les commandes bash risquées (rm -rf, git reset, migrations) et ouvre un panneau de confirmation listant ce qui serait touché ; Replay Theater enregistre les éditions de fichiers et les rejoue diff par diff via /replay.

On est au-delà du gadget : un mod peut retenir un tool call, y répondre sans l'exécuter, ou le rerouter vers un autre modèle. Côté distribution, rien de neuf à apprendre : un mod est un plugin dont le comportement vit dans un module JS, et il circule par la même mécanique que les marketplaces privés de plugins que j'avais montés pour mon équipe. Pour un lead dev, ça veut dire des garde-fous maison déployables sur tous les postes en une commande.

Sécurité : pas de sandbox, et c'est écrit noir sur blanc

Le runtime des mods n'expose ni DOM ni Node directement — tout passe par l'API $. Ne vous y trompez pas : $.fs lit et écrit vos fichiers, $.process.run() lance des sous-processus, $.http sort sur le réseau. En pratique, un mod a exactement les accès de Claude Code : il voit chaque prompt, chaque sortie d'outil, peut approuver un appel avant que vous soyez sollicité, et consommer votre forfait via $.model. Anthropic le dit sans détour dans son guide : installez un mod comme un package, lisez le dépôt d'abord, uniquement depuis des gens de confiance. Après la faille GitSpawn qui compromettait Claude Code à la simple ouverture d'un repo, on sait ce que pèse ce genre de recommandation.

Côté entreprise, le cadrage existe, et il est plutôt bien pensé : l'administrateur peut restreindre les mods chargés, disableAllHooks coupe tout, --safe-mode empêche l'installation, et claude plugin validate inspecte un paquet avant pose. Les plans Team et Enterprise chargent en premier un mod « security-default » qui bloque les détournements risqués. Un invariant rassurant : aucun mod ne peut modifier le prompt de permission lui-même.

Combien coûtent les mods Claude Code, et comment les activer

Zéro euro de plus : les mods sont inclus et activés par défaut depuis Claude Code 2.1.287, dans le CLI comme dans l'app desktop. Il faut un abonnement Claude donnant accès à Claude Code, rien d'autre. L'installation passe par le système de plugins :

[[terminal:/plugin marketplace add anthropics/claude-code-playground /plugin install token-weather@claude-code-playground /plugin reload]]

Le playground fournit des exemples typés (manifeste, hooks.json, module, tests) dont je conseille de partir plutôt que d'une page blanche. Et si vous poussez un mod maison à l'équipe, traitez-le comme n'importe quel livrable : les evals de plugins que je documentais pour les skills s'appliquent telles quelles — un mod qui réécrit des prompts sans tests de non-régression, c'est une panne silencieuse garantie.

Claude Code mods : mon avis après 48 heures

Deux jours, c'est court, donc je parle de première prise en main, pas de bilan. Mais le cap est clair : Claude Code devient ce que le navigateur est devenu avec les extensions — une plateforme qu'on plie à son workflow au lieu de la subir. Pour une équipe dev qui a déjà des conventions (commandes interdites, redaction de secrets, télémétrie), les mods sont le chaînon manquant : du garde-fou exécutable, versionné, déployé comme un plugin.

Pour un indépendant qui utilise Claude Code deux heures par semaine, c'est du confort, pas une urgence : les quatre mods intégrés suffisent. Et pour tout le monde, une règle : tant que l'écosystème n'a pas de marketplace relue sérieusement, un mod tiers s'audite ligne par ligne avant installation. La fonctionnalité la plus excitante de l'année sur Claude Code est aussi son nouveau premier vecteur d'attaque. Les deux sont vrais en même temps.

FAQ

Les mods Claude Code sont-ils gratuits ?
Oui. Les mods sont inclus dans Claude Code et activés par défaut depuis la version 2.1.287, sans facturation séparée, dans le CLI et l'app desktop. Attention à un détail : un mod peut appeler le modèle via $.model, et cette consommation s'impute sur votre forfait Claude.
Quelle différence entre un mod, un hook et un plugin Claude Code ?
Les settings hooks sont des scripts shell appelés événement par événement, sans état, via stdin/stdout. Un mod est un module TypeScript chargé une fois en mémoire, qui garde un état, accède à l'API interne ($.ui, $.fs, $.state…) et peut dessiner de l'interface. Le plugin est l'emballage de distribution : un mod s'installe et se partage comme un plugin classique.
Peut-on bloquer les mods en entreprise ?
Oui, à plusieurs niveaux : l'administrateur restreint la liste des mods chargés, disableAllHooks les coupe tous, --safe-mode empêche toute installation, et claude plugin validate inspecte un paquet avant pose. Sur les plans Team et Enterprise, un mod « security-default » se charge en premier pour bloquer les détournements risqués, et aucun mod ne peut modifier le prompt de permission.
Comment essayer un mod Claude Code sans risque ?
Partez du dépôt officiel anthropics/claude-code-playground : les exemples (Token Weather, Blast Radius, Replay Theater) sont courts, typés et testés. Lisez le code avant installation, passez-le dans claude plugin validate, et testez sur un poste sans secrets de production. Le hot reload permet d'itérer sans redémarrer la session.
Partager
Résumé vidéoen cours…