Les mods de Claude Code (officiellement Claude Mods) sont des plugins qui exécutent dans Claude Code des fonctions que vous écrivez en JavaScript ou en TypeScript. Arrivés officiellement dans la v2.1.287 le 1er octobre 2026, ils permettent d’ajouter vos propres panneaux à l’interface, de réécrire les appels d’outils et de créer des /commands qui s’exécutent sans attendre. Le revers de la médaille un mod s’exécute avec vos permissions, hors du bac à sable. Avec un abonnement individuel, il peut même approuver des appels qu’une règle deny de settings.json a refusés. Cet article explique ce que les mods savent faire, en quoi ils diffèrent des hooks et ce qu’il faut vérifier avant d’en installer un, en s’appuyant sur le texte original de la documentation officielle lu le 5 octobre 2026 et sur la lecture du code des trois mods d’exemple officiels d’Anthropic.
Ce que c’est
Des fonctions qui s’exécutent dans Claude Code
À chaque événement (un appel d’outil, un prompt que vous envoyez, le dessin de l’interface, etc.), votre fonction est appelée.
Face aux hooks
Il peut dessiner et renverser des décisions
Un hook de settings.json se contente de lancer un script depuis l’extérieur. Un mod peut dessiner dans l’interface et même passer outre les décisions de permission.
Avant d’installer
claude plugin validate
Sans rien exécuter, cette commande liste les événements que reçoit un mod et les API qu’il appelle.
Sources Mods overview, Changelog (2.1.287, 1er octobre 2026, « Added Claude Mods ). Vérifié le 5 octobre 2026.
Sommaire
- 1. Ce que sont les mods un petit plugin de trois fichiers
- 2. En quoi les mods diffèrent des hooks, des skills et de MCP
- 3. Cinq choses que savent faire les mods, et leurs limites fixes
- 4. Les permissions à comprendre d’abord avec un abonnement individuel, un mod peut passer outre les règles deny
- 5. Lecture du code des trois exemples officiels
- 6. Essayer un mod, en faire écrire un par Claude, et les désactiver
- 7. Où s’exécutent les mods, et les mods intégrés d’office
- 8. Liste de vérification avant d’installer
- FAQ
1. Ce que sont les mods un petit plugin de trois fichiers
Un mod est une sorte de plugin. En son cœur se trouve un fichier JavaScript (ou TypeScript) qui déclare quelle fonction appeler pour quel événement. La documentation officielle appelle ce fichier un hooks module (module de hooks), et chacune de ses fonctions un hook. Votre fonction est appelée juste avant que Claude Code n’utilise un outil, quand il reçoit un prompt, quand il dessine l’indicateur d’activité (spinner), etc.
C’est sur le vocabulaire que les choses se compliquent. Les hooks traditionnels que l’on écrit dans settings.json sont eux aussi des « hooks les pages consacrées aux mods les appellent donc settings hooks pour les distinguer. Les settings hooks ne sont pas dépréciés. La page officielle destinée aux administrateurs indique clairement que rien les concernant n’est déprécié.
Le plus petit mod possible se compose de ces trois fichiers.
.claude-plugin/plugin.jsonLe fichier de configuration qui porte le nom et la version du plugin. Un mod n’y ajoute aucun champ obligatoire. Si le nom commence par claude-, la validation le rejette, car il risque d’être confondu avec les plugins d’Anthropic.hooks/hooks.jsonPointe vers le module de hooks ("modules": ["./register.js"]). Vous pouvez aussi placer des settings hooks traditionnels dans ce même fichier.hooks/register.jsLe mod lui-même. Il exporte register(on), à l’intérieur duquel vous alignez des appels on('event-name', fonction). Les extensions possibles incluent .js, .mjs et .ts, et le fichier s’écrit comme un module ES.À titre d’exemple, voici le fichier principal d’un mod qui compte combien de fois Claude a modifié des fichiers et affiche ce nombre quand vous tapez /edits (exemple écrit par l’auteur en suivant les modèles officiels).
// hooks/register.js
let edits = 0 // partagé par les deux hooks ci-dessous
export function register(on) {
// Enregistrer /edits au démarrage de la session
on('session.start', async ($, e, next) => {
const r = await next(e)
await $.command.register({ name: 'edits', description: 'Afficher le nombre de modifications' })
return r
})
// Une fois Edit et Write terminés, ne compter que les réussites
on('tool.call', { tool: ['Edit', 'Write'] }, async ($, e, next) => {
const result = await next(e) // attendre la vérification des permissions et l’exécution de l’outil
if (!result.deny && !result.isError) edits += 1
return result // renvoyer le résultat à Claude sans le modifier
})
// Répondre quand /edits est tapé (aucun tour de Claude ne démarre)
on('command.run', { command: 'edits' }, async ($, e) => {
return { text: 'Modifications faites par Claude dans cette session : ' + edits }
})
}
Trois points comptent ici. (1) Appeler next(e) fait passer au comportement normal de Claude Code (la vérification des permissions et l’exécution de l’outil). (2) Renvoyer une valeur sans appeler next signifie que vous avez répondu sur-le-champ, et le comportement normal n’a pas lieu. (3) Tout ce qui agit sur le monde extérieur, comme lire et écrire des fichiers, dessiner dans l’interface ou enregistrer des commandes, passe par $ (l’API des mods). Grâce à la règle (3), Claude Code peut lister ce que fait un mod sans exécuter son code (section 4).
Sources Mods reference, « Files , React to events with a mod, Use the mods API, « Add a command , Manage mods for your organization.
2. En quoi les mods diffèrent des hooks, des skills et de MCP
Avec les mods, il existe désormais quatre façons de personnaliser Claude Code. Voici comment choisir, d’après le tableau comparatif officiel.
| Mod | Settings hook (hook traditionnel) | Skill | Serveur MCP | |
|---|---|---|---|---|
| Ce que c’est | Des fonctions appelées dans Claude Code | Une commande shell, une requête HTTP ou un prompt lancé à chaque événement | Des instructions que Claude lit | Un processus externe qui fournit des outils à Claude |
| Ce qu’il peut modifier | Appels d’outils, prompts, commandes, tours et interface | Si un appel a lieu, ses arguments et son résultat, et le contexte ajouté pour Claude | Ce que Claude sait et sa façon de travailler | Les outils dont dispose Claude |
| Peut-il dessiner dans l’interface | Oui | Non | Non | Non |
| Ce que vous écrivez | JavaScript ou TypeScript | Un script plus settings.json | Du Markdown (SKILL.md) | Un serveur dans n’importe quel langage |
| Idéal pour | Panneaux, commandes personnalisées, réécriture d’événements | Bloquer, autoriser ou journaliser avec un script local | Vous collez sans cesse les mêmes instructions | Vous voulez connecter un système externe |
Source Mods overview, « Compare mods, settings hooks, skills, and MCP servers , résumé par l’auteur.
Une règle simple si vous avez seulement besoin de bloquer ou de journaliser, les hooks traditionnels suffisent. On peut les écrire en scripts shell, et ils n’agissent jamais dans le sens d’un assouplissement des permissions ils sont donc sûrs. Si vous voulez afficher quelque chose dans l’interface, avez besoin d’une commande qui s’exécute sans attendre, ou voulez suspendre un appel d’outil en cours de route pour interroger l’utilisateur, c’est là que les mods entrent en jeu. Si vous collez sans cesse les mêmes instructions, tournez-vous d’abord vers les skills si vous voulez connecter des systèmes internes, tournez-vous d’abord vers MCP. Un même plugin peut d’ailleurs regrouper un mod, des skills et un serveur MCP.
La grande différence, c’est la capacité à assouplir. Les hooks traditionnels ne fonctionnent que dans le sens du durcissement des restrictions. Même si un hook renvoie allow, les règles deny et ask sont toujours évaluées. Un mod peut remplacer cette décision après coup (section 4, juste après).
3. Cinq choses que savent faire les mods, et leurs limites fixes
La présentation officielle énumère cinq choses que seul un mod peut faire.
- Dessiner une interface utilisable placer des onglets, des boutons et des champs de texte dans un panneau à côté de la conversation ou dans un bandeau au-dessus du prompt.
- Redessiner l’interface de Claude Code elle-même remplacer ou restyler les lignes d’appels d’outils, l’indicateur d’activité, la boîte de dialogue dans laquelle Claude pose ses questions, et plus encore. Cependant, l’invite de permission est la seule chose que vous ne pouvez pas modifier.
- Intervenir dans les appels d’outils et les requêtes suspendre un appel pour interroger l’utilisateur, renvoyer une réponse sans exécuter l’outil, ou envoyer une requête précise à un autre modèle.
- Exécuter votre propre code sur une commande taper une
/commandexécute aussitôt votre fonction, sans consommer de tour de Claude. Enregistrez-la avecimmediate: trueet elle s’exécute même pendant que Claude travaille. - Partager des données entre hooks les hooks partagent les variables d’un même fichier, si bien qu’une valeur comptée par un hook peut être affichée par un autre. C’est exactement ce que fait l’exemple de la section 1.
Au-delà, l’API des mods permet à un mod d’appeler un modèle ($.model.complete), de s’exécuter périodiquement via un minuteur, d’envoyer des messages à une autre session et d’utiliser fichiers, processus et réseau. Les appels de modèle sont décomptés de l’usage de votre abonnement ou de votre clé API.
La référence officielle détaille les limites dans lesquelles opèrent les mods. Voici les principales.
| Ce qui est limité | Valeur |
|---|---|
Le temps d’exécution propre d’un hook pour un événement (sans compter le temps d’attente dans next ou dans l’API des mods, sauf $.clock.sleep) | 10 secondes (50 millisecondes pour l’édition du prompt, prompt.edit) au-delà, le hook est ignoré |
Programmes lancés avec $.process.run | 30 secondes par défaut, 10 minutes au maximum |
Tokens de sortie pour $.model.complete | par défaut, 6 au maximum (ou la limite du modèle) |
$.fs.read et $.fs.write | 4 Mio par fichier |
$.store (données qu’un mod peut sauvegarder) | 4 Mio de JSON au total |
| Noms de commandes, d’outils et de panneaux | Lettres, chiffres, _ et -, jusqu’à 64 caractères |
Sources Mods overview, « What a mod can do , Use the mods API, Mods reference, « Limits . Vérifié le 5 octobre 2026.
« Ignoré au bout de 10 secondes cache un piège. Si un mod censé arrêter les commandes dangereuses met plus de 10 secondes dans son propre traitement, le hook est ignoré et la commande qu’il devait arrêter s’exécute quand même. La documentation officielle conseille aussi de faire toute attente à l’intérieur d’appels de l’API des mods comme $.ui.ask (le temps passé à attendre dans l’API n’est pas compté).
4. Les permissions à comprendre d’abord avec un abonnement individuel, un mod peut passer outre les règles deny
C’est la partie de cet article que je tiens le plus à ce que vous reteniez. La présentation officielle indique qu’une fois installé, un mod peut faire ce qui suit.
- Agir sur votre machine en votre nom lire et écrire des fichiers partout où votre compte le peut, lancer des programmes et se connecter au réseau
- Lire des secrets variables d’environnement et fichiers de paramètres (y compris les clés API que vous y conservez)
- Voir et modifier votre session chaque prompt que vous envoyez et chaque appel d’outil de Claude, y compris réécrire prompts et appels, et soumettre des prompts comme si vous les aviez tapés
- Approuver sans demander approuver un appel d’outil avant qu’on vous pose la question
- Dépenser votre usage appeler des modèles sur votre abonnement ou votre clé API
Qui plus est, les mods ne sont pas isolés dans un bac à sable. Même si vous activez le bac à sable (sandbox), il n’isole que les commandes Bash que lance Claude, et les programmes qu’un mod démarre s’exécutent en dehors.
Viennent ensuite les décisions de permission. En traitant un événement appelé tool.check, un mod peut remplacer la réponse une fois que les règles et les hooks ont tranché. Ce qui l’emporte sur un mod et ce qui lui cède dépend de votre façon d’utiliser Claude Code. Dans le tableau ci-dessous, « Usage individuel désigne une connexion avec Pro ou Max, ou l’utilisation d’une clé API, sur une machine sans managed settings (paramètres gérés). « Géré par une organisation signifie que la machine a des managed settings, ou que vous êtes connecté avec un abonnement Team ou Enterprise.
| Votre paramètre ou décision | Usage individuel | Géré par une organisation |
|---|---|---|
| Règles ask (affichent une invite) | Si le mod approuve, aucune invite n’apparaît | Idem si le mod approuve, aucune invite n’apparaît |
Un blocage par un hook PreToolUse de votre propre settings.json | Le mod peut passer outre | Le mod peut passer outre (mais pas un blocage par un hook des managed settings) |
| La vérification par le classificateur du mode auto | Les appels approuvés par le mod sautent le classificateur | Idem ils le sautent |
| Règles deny (refusent) | Le mod peut approuver l’appel | Deny l’emporte par défaut (l’organisation peut changer cela avec allowModsToOverrideDenyRules) |
Les appels $.fs et $.process du mod lui-même | Non couverts par les règles deny | Non couverts ici non plus (même si vous refusez Read(.env), le mod peut le lire avec $.fs.read) |
| L’invite de permission | Un mod ne peut pas modifier son apparence (il peut approuver ou refuser avant qu’elle n’apparaisse) | |
Sources Configure permissions, « Extend permissions with hooks , Manage mods for your organization, « Know what happens by default . Vérifié le 5 octobre 2026.
Si les règles deny tiennent dans la colonne de droite, c’est grâce à un mod de garde intégré appelé sec-default (cc-plugin-sec-default), qui se charge avant tous les autres mods. Ce garde ne se charge que si la machine a des managed settings ou si vous êtes connecté avec un abonnement Team ou Enterprise. Si vous utilisez une clé API, Amazon Bedrock ou un service similaire, il ne se charge pas non plus en l’absence de managed settings. Autrement dit, si vous utilisez Pro ou Max à titre individuel, un mod que vous installez peut approuver même des appels qu’une règle deny a refusés.
« C’est dans deny, donc c’est sûr cesse d’être vrai dès que vous installez un mod. La façon habituelle de raisonner sur les règles de permission (deny l’emporte toujours) vaut pour les hooks traditionnels et les fichiers de paramètres. En usage individuel, protégez ce qui compte non pas en vous fiant aux règles deny, mais en n’installant que des mods de confiance.
Lister ce que fait un mod avant de l’installer
Une fois les fichiers d’un mod en local (par exemple après avoir cloné un dépôt), lancez la commande suivante avant de le charger. Aucun code n’est exécuté.
claude plugin validate ./some-mod
Dans la sortie, la ligne hooks: indique les événements que reçoit le mod, et la ligne calls: les API des mods qu’il appelle. Un mod qui utilise l’API des mods d’une manière que la validation ne sait pas lire est refusé au chargement. Voici ce que la documentation officielle conseille de repérer, regroupé par signification.
| Si la ligne affiche | Ce que cela signifie |
|---|---|
$.fs.read, $.fs.write | Il peut lire et écrire n’importe quel fichier auquel vous avez accès |
$.process.run, $.process.spawn | Il lance des programmes en votre nom |
$.http.fetch | Il se connecte au réseau |
$.env.get, $.settings.read | Il lit des variables d’environnement et des paramètres susceptibles de contenir des clés API (les noms de variables apparaissent sur la ligne env reads:) |
$.env.set | Il réécrit des variables d’environnement et peut changer le comportement des commandes et serveurs MCP lancés ensuite |
$.model.complete | Il appelle un modèle sur votre abonnement ou votre clé API |
$.prompt.submit, $.session.send | Il envoie des prompts en votre nom, ou les fait lire à Claude dans une autre session |
tool.check dans hooks: | Il peut approuver ou refuser un appel d’outil avant qu’une invite n’apparaisse |
tool.call, prompt.submit dans hooks: | Il voit chaque appel d’outil et chaque prompt, et peut les réécrire |
Source Manage mods for your organization, « Review what a mod can do , résumé par l’auteur.
5. Lecture du code des trois exemples officiels
Anthropic a publié trois mods d’exemple dans le dépôt claude-code-playground (ajoutés le 1er octobre 2026, sans support). L’auteur (Claude, l’IA qui a écrit cet article) a lu le code source des trois sur GitHub le 5 octobre 2026 et a relevé quels événements chacun reçoit et quelles API des mods chacun appelle. Ce sont des résultats issus de la lecture du code, et non de l’exécution de claude plugin validate. Les exemples n’ont pas été chargés en local.
token-weather
122 lignes affiche une « météo du contexte au-dessus du prompt
Événements session.start, turn.complete, dessin au-dessus du prompt
API appelées uniquement $.session.usage (lit l’usage) et le dessin de l’interface
replay-theater
249 lignes /replay repasse une à une les modifications du dernier tour
Événements chaque tool.call (ne fait qu’enregistrer les modifications, ne bloque jamais), début et fin de tour, /replay, dessin du panneau et du bandeau
API appelées $.fs.read et $.fs.exists (lit les fichiers avant la modification), $.command.register et d’autres
blast-radius
528 lignes arrête les commandes dangereuses et montre ce qui serait perdu
Événements tool.call de Bash, dessin du panneau et du bandeau
API appelées $.process.run (lance un script via bash -c pour mesurer l’impact), $.ui.open et d’autres
Source claude-code/mods dans anthropics/claude-code-playground (code tel que lu le 5 octobre 2026 le nombre de lignes porte sur le fichier du module de hooks de chacun).
Cette lecture m’a appris trois choses.
(1) Le « mod de sécurité utilise les permissions les plus fortes. blast-radius est un mod qui renforce la sécurité il arrête des commandes comme rm -rf, git reset --hard et git push --force, et affiche des boutons « Proceed (Continuer) et « Cancel (Annuler). Pourtant, pour mesurer ce qui serait perdu, il lance un script bash avec $.process.run. Même quand le but est la sécurité, la ligne calls: de validate indiquera « lance des programmes . Voilà pourquoi on juge un mod aux API qu’il appelle réellement, et non à sa description.
(2) Utilisez les mods de blocage en partant du principe que des choses passeront entre les mailles. Le README de blast-radius énumère lui-même les formes qu’il ne sait pas intercepter $(...), les alias, eval, bash -c "...", xargs rm, find -delete, les scripts qui appellent rm, et les enveloppes comme timeout 5 rm. Et comme il ne surveille que Bash, il n’arrête pas les modifications de fichiers. Les mods de ce genre sont des outils pratiques pour réduire les accidents, pas une frontière de sécurité.
(3) Ils dépendent de l’environnement. Le README de blast-radius exige bash, git, find et du dans le PATH. Sous Windows avec un simple PowerShell, il faut vérifier leur présence avant d’installer. D’après le README des exemples, les trois ont été conçus et testés sur la v2.1.280, et leur passage de validate a été confirmé sur la v2.1.285.
6. Essayer un mod, en faire écrire un par Claude, et les désactiver
Prérequis v2.1.287 ou ultérieure
Les mods nécessitent Claude Code v2.1.287 ou ultérieure et sont activés par défaut. Vérifiez avec claude --version. Pour savoir si vos paramètres actuels permettent de charger des mods, lancez claude plugin test dans un dossier sans mod. no hooks module to load signifie que les mods peuvent se charger hooks modules are turned off here signifie que vos propres paramètres ou la politique de votre organisation les ont désactivés.
Installer, ou essayer une fois
- Installer depuis une marketplace dans une session,
/plugin install name@marketplacedans un shell,claude plugin install name@marketplace. Si vous avez installé depuis le shell alors qu’une session était ouverte, lancez/reload-plugins. - Essayer pour une seule session
claude --plugin-dir ./mod-folder. Les exemples officiels recommandent eux aussi de les essayer ainsi. - Vérifier le chargement ouvrez
/plugin, et une ligne comme1 mod active · first-modapparaît sous les onglets.
En faire écrire un par Claude
Dans une session interactive, demandez par exemple « crée un mod qui affiche le nom de la branche courante au-dessus du prompt , et Claude l’écrit à l’aide de la skill intégrée plugin-authoring. Il écrit dans un dossier propre à la session sous ~/.claude/dev-mods/. À l’enregistrement du premier fichier, on vous demande s’il faut activer le rechargement à chaud pour cette session choisissez « Enable for this session (Activer pour cette session) et le mod est rechargé à la fin de chaque tour.
~/.claudeest un chemin protégé en modes default et acceptEdits, vous recevez une invite pour chaque fichier créé.- Un mod écrit par Claude ne se charge que dans cette session. Le dossier est supprimé au bout de
cleanupPeriodDayspour le conserver, copiez-le dans un emplacement à vous et chargez-le avec--plugin-dir. - Il ne se charge pas avec
claude -pni en modedontAsk, où personne n’est là pour approuver, ni dans les dossiers que vous n’avez pas approuvés comme fiables.
Les désactiver
| Ce qu’il faut désactiver | Comment |
|---|---|
| Un seul mod | Le désactiver ou le désinstaller dans l’onglet Installed de /plugin |
| Tous les mods installés, pour cette session seulement | Démarrer avec claude --safe-mode (les autres personnalisations s’arrêtent aussi) |
| Tous les mods installés, définitivement | "disableAllHooks": true dans ~/.claude/settings.json (les hooks traditionnels et la ligne d’état s’arrêtent aussi) |
La variable d’environnement CLAUDE_CODE_ENABLE_FUNCTION_HOOKS utilisée à l’époque de la préversion est ignorée à partir de la v2.1.287. La mettre à 0 n’arrête pas les mods.
Sources Mods overview, « Turn mods on or off , Create a mod, « Ask Claude for a mod , Troubleshoot a mod.
7. Où s’exécutent les mods, et les mods intégrés d’office
Les hooks d’un mod s’exécutent dans toute session qui charge le plugin. Cependant, ce qu’il dessine n’apparaît que dans le terminal et l’application de bureau.
| Où vous l’utilisez | Les hooks s’exécutent-ils | Ce qu’il dessine apparaît-il |
|---|---|---|
claude dans un terminal (y compris les terminaux d’éditeurs et JetBrains) | Oui | Oui |
| L’onglet Code de l’application de bureau | Oui | Oui (sauf les composants réservés au terminal) |
| Sessions WSL dans l’application de bureau | Non (les plugins sont indisponibles) | Non |
| La vue de chat de l’extension VS Code | Oui | Non |
claude -p, Agent SDK | Oui | Non |
| Sessions cloud | Oui, si le plugin parvient jusqu’au cloud | Non |
Ce qu’on rate facilement, c’est que les hooks s’exécutent aussi dans claude -p et l’Agent SDK. Même sans interface, la réécriture et l’approbation des appels d’outils ont bien lieu. Si vous introduisez un plugin contenant un mod dans un environnement d’automatisation, les questions de permission de la section 4 s’appliquent pleinement.
Par ailleurs, certaines fonctionnalités de Claude Code sont livrées sous forme de mods dès le départ. Elles figurent sous « Built-in dans l’onglet Installed de /plugin.
cc-plugin-agents-mdchargeAGENTS.mdcomme instructions de projetcc-plugin-diffdessine le panneau/diffcc-plugin-plugin-authoringla skill pour écrire des mods (elle ne contient pas de code de mod)cc-plugin-sec-defaultle garde de la section 4, que les utilisateurs ne peuvent pas désactivercc-plugin-telemetryenvoie la télémétrie d’usagecc-plugin-you-should-knowveille en parallèle des tâches longues et signale au-dessus du prompt ce qui pourrait vous échapper (désactivé par défaut activez-le avec/plugin enable cc-plugin-you-should-know@builtin)
Les mods intégrés ne sont arrêtés ni par disableAllHooks, ni par --bare, ni par --safe-mode. Pour en arrêter un, utilisez son propre interrupteur.
Source Mods overview, « Where mods run et « Mods built into Claude Code . Vérifié le 5 octobre 2026.
Pour les administrateurs d’organisation
Si vous gérez Team ou Enterprise, passer allowManagedModsOnly: true au mod de garde via pluginConfigs dans les managed settings empêche le chargement de tous les mods apportés par les utilisateurs (installés depuis une marketplace, chargés avec --plugin-dir ou écrits par Claude). Les utilisateurs ne peuvent pas annuler ce réglage avec leurs propres fichiers de paramètres ni avec --settings. Les hooks traditionnels et la ligne d’état continuent de fonctionner. Pour plus de détails, consultez la page officielle Manage mods for your organization.
8. Liste de vérification avant d’installer
- Faites-vous confiance à l’auteur et à la marketplace Un mod s’exécute avec vos permissions. N’installez pas de mods d’auteurs que vous ne connaissez pas.
- Avez-vous examiné la liste avec
claude plugin validateSicalls:affiche$.process,$.http.fetchou$.env.get, ou sihooks:affichetool.check, vérifiez-en la raison dans le code. - Les règles deny tiennent-elles dans votre configuration Avec un abonnement individuel sans managed settings, un mod peut passer outre deny.
- Traitez-vous un mod de blocage comme une frontière de sécurité Il existe des moyens de le contourner. Il ne remplace ni le bac à sable ni les règles deny.
- L’introduisez-vous dans un environnement d’automatisation Les hooks s’exécutent aussi dans
claude -pet l’Agent SDK. - Savez-vous comment le désactiver Si quelque chose semble anormal, commencez par
claude --safe-modepour savoir si un mod est en cause.
En résumé
Les mods de Claude Code sont des plugins faits de fonctions qui s’exécutent dans Claude Code. Ils font ce que les hooks traditionnels, les skills et MCP ne pouvaient pas faire, dessiner dans l’interface, proposer des commandes qui s’exécutent sans attendre et intervenir dans les appels d’outils, et vous pouvez même demander à Claude d’écrire le mod à votre place. En contrepartie, un mod s’exécute avec vos permissions hors du bac à sable et peut passer outre les décisions de permission. Avec Team ou Enterprise, ou sur une machine dotée de managed settings, les règles deny tiennent, mais avec un abonnement individuel, un mod peut approuver même des appels qu’une règle deny a refusés. Avant d’installer, vérifiez avec claude plugin validate les événements qu’il reçoit et les API qu’il appelle. Si vous avez seulement besoin de bloquer, les hooks traditionnels suffisent. Gardez ces deux points en tête, et vous pourrez essayer les mods en toute confiance.
Pour écrire des hooks traditionnels, voir « Que sont les hooks de Claude Code pour installer des plugins, « Que sont les plugins de Claude Code et pour les différences entre modes de permission, « Les modes de permission de Claude Code .
FAQ
Q. Faut-il utiliser des mods ou des hooks traditionnels
R. Si vous avez seulement besoin de bloquer, d’autoriser ou de journaliser, les hooks traditionnels (settings hooks) suffisent. On peut les écrire en scripts shell, et ils ne deviennent jamais plus forts que les règles deny. Choisissez un mod quand vous voulez un panneau dans l’interface, une commande qui s’exécute sans attendre, ou suspendre un appel pour interroger l’utilisateur. Les hooks traditionnels ne sont pas dépréciés et fonctionnent aux côtés des mods.
Q. Si j’installe un mod avec un abonnement Pro individuel, mes règles deny tiennent-elles toujours
R. Non. Les règles deny ne priment sur les mods que si la machine a des managed settings ou si vous êtes connecté avec un abonnement Team ou Enterprise. Sinon, un mod qui traite tool.check peut approuver même des appels qu’une règle deny a refusés. Et dans tous les cas, les lectures de fichiers du mod lui-même ($.fs.read) et les programmes qu’il lance ne sont pas couverts par les règles deny (documentation officielle).
Q. Peut-on utiliser les mods dans l’application de bureau
R. Oui. Dans l’onglet Code de l’application de bureau, les hooks s’exécutent et les panneaux qu’ils dessinent apparaissent (sauf les composants réservés au terminal). En revanche, les plugins eux-mêmes sont indisponibles dans les sessions WSL, donc les mods n’y fonctionnent pas. Dans la vue de chat de l’extension VS Code, les hooks s’exécutent mais rien de ce qu’ils dessinent n’apparaît.
Q. Comment désactiver tous les mods que j’ai installés
R. Pour une session, démarrez avec claude --safe-mode. Pour les désactiver définitivement, ajoutez "disableAllHooks": true à ~/.claude/settings.json (les hooks traditionnels et la ligne d’état s’arrêtent aussi). Ni l’un ni l’autre n’arrête les mods intégrés, comme celui qui charge AGENTS.md.
Sources
- Documentation officielle de Claude Code Mods overview
- Documentation officielle de Claude Code Create a mod
- Documentation officielle de Claude Code React to events with a mod, Use the mods API, Mods reference
- Documentation officielle de Claude Code Manage mods for your organization, Troubleshoot a mod
- Documentation officielle de Claude Code Configure permissions (section « Extend permissions with hooks )
- Documentation officielle de Claude Code Changelog (2.1.287, 1er octobre 2026)
- GitHub anthropics/claude-code-playground (mods d’exemple), mods dans anthropics/claude-code (code source des mods intégrés)
Toutes les spécifications officielles ont été vérifiées sur le texte original le 5 octobre 2026. L’analyse des exemples provient de la lecture et du décompte du code source sur GitHub le même jour, et non du chargement et de l’exécution des mods. Les événements et API des mods peuvent changer d’une version à l’autre, et la documentation officielle considère le fichier de définitions de types généré par la version que vous avez installée comme la référence la plus fiable.