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.

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.

ModSettings hook (hook traditionnel)SkillServeur MCP
Ce que c’estDes fonctions appelées dans Claude CodeUne commande shell, une requête HTTP ou un prompt lancé à chaque événementDes instructions que Claude litUn processus externe qui fournit des outils à Claude
Ce qu’il peut modifierAppels d’outils, prompts, commandes, tours et interfaceSi un appel a lieu, ses arguments et son résultat, et le contexte ajouté pour ClaudeCe que Claude sait et sa façon de travaillerLes outils dont dispose Claude
Peut-il dessiner dans l’interfaceOuiNonNonNon
Ce que vous écrivezJavaScript ou TypeScriptUn script plus settings.jsonDu Markdown (SKILL.md)Un serveur dans n’importe quel langage
Idéal pourPanneaux, commandes personnalisées, réécriture d’événementsBloquer, autoriser ou journaliser avec un script localVous collez sans cesse les mêmes instructionsVous 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.

  1. 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.
  2. 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.
  3. 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.
  4. Exécuter votre propre code sur une commande  taper une /command exécute aussitôt votre fonction, sans consommer de tour de Claude. Enregistrez-la avec immediate: true et elle s’exécute même pendant que Claude travaille.
  5. 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.run30 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.write4 Mio par fichier
$.store (données qu’un mod peut sauvegarder)4 Mio de JSON au total
Noms de commandes, d’outils et de panneauxLettres, 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écisionUsage individuelGéré par une organisation
Règles ask (affichent une invite)Si le mod approuve, aucune invite n’apparaîtIdem  si le mod approuve, aucune invite n’apparaît
Un blocage par un hook PreToolUse de votre propre settings.jsonLe mod peut passer outreLe mod peut passer outre (mais pas un blocage par un hook des managed settings)
La vérification par le classificateur du mode autoLes appels approuvés par le mod sautent le classificateurIdem  ils le sautent
Règles deny (refusent)Le mod peut approuver l’appelDeny l’emporte par défaut (l’organisation peut changer cela avec allowModsToOverrideDenyRules)
Les appels $.fs et $.process du mod lui-mêmeNon couverts par les règles denyNon couverts ici non plus (même si vous refusez Read(.env), le mod peut le lire avec $.fs.read)
L’invite de permissionUn 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 afficheCe que cela signifie
$.fs.read, $.fs.writeIl peut lire et écrire n’importe quel fichier auquel vous avez accès
$.process.run, $.process.spawnIl lance des programmes en votre nom
$.http.fetchIl se connecte au réseau
$.env.get, $.settings.readIl 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.setIl réécrit des variables d’environnement et peut changer le comportement des commandes et serveurs MCP lancés ensuite
$.model.completeIl appelle un modèle sur votre abonnement ou votre clé API
$.prompt.submit, $.session.sendIl 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

Ni fichiers, ni processus, ni réseau

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

Lit des fichiers

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

Lance des programmes

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@marketplace  dans 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 comme 1 mod active · first-mod apparaî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.

  • ~/.claude est 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 cleanupPeriodDays  pour le conserver, copiez-le dans un emplacement à vous et chargez-le avec --plugin-dir.
  • Il ne se charge pas avec claude -p ni en mode dontAsk, 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ésactiverComment
Un seul modLe désactiver ou le désinstaller dans l’onglet Installed de /plugin
Tous les mods installés, pour cette session seulementDé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’utilisezLes hooks s’exécutent-ils Ce qu’il dessine apparaît-il 
claude dans un terminal (y compris les terminaux d’éditeurs et JetBrains)OuiOui
L’onglet Code de l’application de bureauOuiOui (sauf les composants réservés au terminal)
Sessions WSL dans l’application de bureauNon (les plugins sont indisponibles)Non
La vue de chat de l’extension VS CodeOuiNon
claude -p, Agent SDKOuiNon
Sessions cloudOui, si le plugin parvient jusqu’au cloudNon

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-md  charge AGENTS.md comme instructions de projet
  • cc-plugin-diff  dessine le panneau /diff
  • cc-plugin-plugin-authoring  la skill pour écrire des mods (elle ne contient pas de code de mod)
  • cc-plugin-sec-default  le garde de la section 4, que les utilisateurs ne peuvent pas désactiver
  • cc-plugin-telemetry  envoie la télémétrie d’usage
  • cc-plugin-you-should-know  veille 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 validate  Si calls: affiche $.process, $.http.fetch ou $.env.get, ou si hooks: affiche tool.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 -p et l’Agent SDK.
  • Savez-vous comment le désactiver  Si quelque chose semble anormal, commencez par claude --safe-mode pour 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

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.