SpyBara
Go Premium

Documentation 2026-09-24 22:57 UTC to 2026-09-25 23:58 UTC

107 files changed +9,340 −5,951. View all changes and history on the product overview
2026
Fri 25 23:58 Thu 24 22:57 Wed 23 23:57 Tue 22 23:59 Mon 21 22:59 Sun 20 23:59 Sat 19 23:57 Fri 18 23:58 Tue 15 23:58 Mon 14 22:58 Sun 13 21:00 Sat 12 03:02 Thu 10 23:00 Wed 9 22:58 Tue 8 20:00 Tue 1 21:02

admin-setup.md +3 −3

Details

94Les paramètres gérés peuvent verrouiller les outils, l'exécution du sandbox, restreindre les serveurs MCP et les sources de plugins, et contrôler les hooks qui s'exécutent. Chaque ligne est une surface de contrôle avec les clés de paramètres qui la pilotent.94Les paramètres gérés peuvent verrouiller les outils, l'exécution du sandbox, restreindre les serveurs MCP et les sources de plugins, et contrôler les hooks qui s'exécutent. Chaque ligne est une surface de contrôle avec les clés de paramètres qui la pilotent.

95 95 

96| Contrôle | Ce qu'il fait | Paramètres clés |96| Contrôle | Ce qu'il fait | Paramètres clés |

97| :----------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |97| :-------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |

98| [Règles de permission](/docs/fr/permissions) | Autoriser, demander ou refuser des outils et commandes spécifiques | `permissions.allow`, `permissions.deny` |98| [Règles de permission](/docs/fr/permissions) | Autoriser, demander ou refuser des outils et commandes spécifiques | `permissions.allow`, `permissions.deny` |

99| [Verrouillage des permissions](/docs/fr/permissions#managed-only-settings) | Rendre les paramètres gérés la [seule source de paramètres des règles de permission](/docs/fr/settings-reference#allowmanagedpermissionrulesonly). Désactiver `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |99| [Verrouillage des permissions](/docs/fr/permissions#managed-only-settings) | Rendre les paramètres gérés la [seule source de paramètres des règles de permission](/docs/fr/settings-reference#allowmanagedpermissionrulesonly). Désactiver `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |

100| [Mode de permission de démarrage](/docs/fr/permission-modes#which-mode-a-session-starts-in) | Choisir le mode de permission dans lequel les sessions de terminal de vos développeurs commencent au lieu du mode de permission de démarrage intégré, ou supprimer le mode auto. L'extension VS Code lit un `defaultMode` que vous définissez uniquement sur les plans Pro, Max et Team ; [Basculer les modes de permission](/docs/fr/permission-modes#switch-permission-modes) énumère ce que l'extension lit | `permissions.defaultMode`, `permissions.disableAutoMode` |100| [Mode de permission de démarrage](/docs/fr/permission-modes#which-mode-a-session-starts-in) | Choisir le mode de permission dans lequel les sessions de terminal de vos développeurs commencent au lieu du mode de permission de démarrage intégré, ou supprimer le mode auto. L'extension VS Code lit un `defaultMode` que vous définissez uniquement sur les plans Pro, Max et Team ; [Basculer les modes de permission](/docs/fr/permission-modes#switch-permission-modes) énumère ce que l'extension lit | `permissions.defaultMode`, `permissions.disableAutoMode` |

101| [Sandboxing](/docs/fr/sandboxing) | Isolation du système de fichiers et du réseau au niveau du système d'exploitation avec listes blanches de domaines | `sandbox.enabled`, `sandbox.network.allowedDomains` |101| [Sandboxing](/docs/fr/sandboxing) | Isolation du système de fichiers et du réseau au niveau du système d'exploitation avec listes blanches de domaines | `sandbox.enabled`, `sandbox.network.allowedDomains` |

102| [Politique gérée CLAUDE.md](/docs/fr/memory#deploy-organization-wide-claude-md) | Instructions à l'échelle de l'organisation chargées dans chaque session, ne peuvent pas être exclues | Fichier au chemin de la politique gérée |102| [Politique gérée CLAUDE.md](/docs/fr/memory#deploy-organization-wide-claude-md) | Instructions à l'échelle de l'organisation chargées dans chaque session, ne peuvent pas être exclues | Fichier au chemin de la politique gérée |

103| [Contrôle du serveur MCP](/docs/fr/managed-mcp) | Restreindre les serveurs MCP que les utilisateurs peuvent ajouter ou connecter, déployer un ensemble fixe, ou fournir des serveurs distants à chaque utilisateur aux côtés des leurs | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, ou un fichier `managed-mcp.json` déployé |103| [Contrôle du serveur MCP](/docs/fr/managed-mcp) | Restreindre les serveurs MCP que les utilisateurs peuvent ajouter ou connecter, déployer un ensemble fixe, ou fournir des serveurs distants à chaque utilisateur aux côtés des leurs | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, ou un fichier `managed-mcp.json` déployé |

104| [Contrôle de la place de marché des plugins](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) | Restreindre les sources de place de marché que les utilisateurs peuvent ajouter et installer, rejeter les drapeaux CLI qui chargent les plugins, agents et serveurs MCP pour une seule exécution, bloquer les [sources de plugin `command`](/docs/fr/plugin-marketplaces#command-sources), et autoriser les plugins des places de marché qui peuvent être suggérés | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |104| [Contrôle de la place de marché des plugins](/docs/fr/plugins/org#restrict-what-users-can-install) | Restreindre les sources de place de marché que les utilisateurs peuvent ajouter et installer, rejeter les drapeaux CLI qui chargent les plugins, agents et serveurs MCP pour une seule exécution, bloquer les [sources de plugin `command`](/docs/fr/plugins/marketplace-reference#command-plugin-source), et autoriser les plugins des places de marché qui peuvent être suggérés | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |

105| [Verrouillage de la personnalisation](/docs/fr/settings-reference#strictpluginonlycustomization) | Bloquer les skills, agents, hooks et serveurs MCP provenant de sources utilisateur et projet, afin qu'ils ne proviennent que de plugins ou de paramètres gérés. Le verrouillage des skills arrête également les [skills que vos développeurs activent sur claude.ai](/docs/fr/skills#where-synced-skills-load) de se synchroniser | `strictPluginOnlyCustomization` |105| [Verrouillage de la personnalisation](/docs/fr/settings-reference#strictpluginonlycustomization) | Bloquer les skills, agents, hooks et serveurs MCP provenant de sources utilisateur et projet, afin qu'ils ne proviennent que de plugins ou de paramètres gérés. Le verrouillage des skills arrête également les [skills que vos développeurs activent sur claude.ai](/docs/fr/skills#where-synced-skills-load) de se synchroniser | `strictPluginOnlyCustomization` |

106| [Désactiver la synchronisation claude.ai](/docs/fr/settings-reference#syncclaudeaiskills) | Arrêter Claude Code de charger les [skills](/docs/fr/skills#how-synced-skills-behave) et [plugins](/docs/fr/plugins-reference#synced-plugins) que vos développeurs activent sur claude.ai. Si vous désactivez les Skills pour votre organisation sur claude.ai, Claude Code arrête la synchronisation des deux, et sur v2.1.273 ou ultérieur, il supprime également ceux qu'il a déjà synchronisés. Pour arrêter l'un ou l'autre sans désactiver les Skills, définissez sa clé sur `false` dans les paramètres gérés | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |106| [Désactiver la synchronisation claude.ai](/docs/fr/settings-reference#syncclaudeaiskills) | Arrêter Claude Code de charger les [skills](/docs/fr/skills#how-synced-skills-behave) et [plugins](/docs/fr/plugins/loading#synced-plugins) que vos développeurs activent sur claude.ai. Si vous désactivez les Skills pour votre organisation sur claude.ai, Claude Code arrête la synchronisation des deux, et sur v2.1.273 ou ultérieur, il supprime également ceux qu'il a déjà synchronisés. Pour arrêter l'un ou l'autre sans désactiver les Skills, définissez sa clé sur `false` dans les paramètres gérés | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |

107| [Restrictions des hooks](/docs/fr/settings-reference#allowmanagedhooksonly) | Restreindre les hooks qui s'exécutent et restreindre les URL des hooks HTTP ; consultez [ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly) pour la liste complète des effets | `allowManagedHooksOnly`, `allowedHttpHookUrls` |107| [Restrictions des hooks](/docs/fr/settings-reference#allowmanagedhooksonly) | Restreindre les hooks qui s'exécutent et restreindre les URL des hooks HTTP ; consultez [ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly) pour la liste complète des effets | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

108| [Application de la connexion](/docs/fr/settings-reference#forceloginmethod) | Restreindre la connexion à une méthode spécifique ou à une organisation Anthropic. La restriction de méthode s'applique sur l'extension VS Code, Agent SDK, `claude setup-token`, et `/install-github-app`, et l'écran de connexion interactif du terminal, accessible via `/login` ou l'intégration au premier lancement, présélectionne la méthode sans l'appliquer ; Claude Code vérifie l'organisation pour les connexions de compte claude.ai dans le terminal, l'extension VS Code et Agent SDK, et ne la vérifie pas pour les connexions Claude Console ou pour la connexion [gateway](/docs/fr/claude-apps-gateway). Avant v2.1.212, seules les connexions au terminal appliquaient l'une ou l'autre clé. Lorsqu'elle est définie, les sessions authentifiées par `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, ou `apiKeyHelper` sont bloquées au démarrage ; les sessions des fournisseurs cloud ne sont pas affectées | `forceLoginMethod`, `forceLoginOrgUUID` |108| [Application de la connexion](/docs/fr/settings-reference#forceloginmethod) | Restreindre la connexion à une méthode spécifique ou à une organisation Anthropic. La restriction de méthode s'applique sur l'extension VS Code, Agent SDK, `claude setup-token`, et `/install-github-app`, et l'écran de connexion interactif du terminal, accessible via `/login` ou l'intégration au premier lancement, présélectionne la méthode sans l'appliquer ; Claude Code vérifie l'organisation pour les connexions de compte claude.ai dans le terminal, l'extension VS Code et Agent SDK, et ne la vérifie pas pour les connexions Claude Console ou pour la connexion [gateway](/docs/fr/claude-apps-gateway). Avant v2.1.212, seules les connexions au terminal appliquaient l'une ou l'autre clé. Lorsqu'elle est définie, les sessions authentifiées par `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, ou `apiKeyHelper` sont bloquées au démarrage ; les sessions des fournisseurs cloud ne sont pas affectées | `forceLoginMethod`, `forceLoginOrgUUID` |

109| [Désactiver la vue agent](/docs/fr/agent-view#how-background-sessions-are-hosted) | Désactiver `claude agents`, `--bg`, `/background`, et le superviseur à la demande | `disableAgentView` |109| [Désactiver la vue agent](/docs/fr/agent-view#how-background-sessions-are-hosted) | Désactiver `claude agents`, `--bg`, `/background`, et le superviseur à la demande | `disableAgentView` |

Details

281 Mode contournement des permissions (`bypassPermissions`)281 Mode contournement des permissions (`bypassPermissions`)

282</h4>282</h4>

283 283 

284Approuve automatiquement les utilisations d'outils sans demander, sauf les cas énumérés dans l'avertissement ci-dessous. Les hooks s'exécutent toujours et peuvent bloquer les opérations si nécessaire.284Approuve automatiquement les utilisations d'outils sans demander, sauf les cas énumérés dans l'avertissement ci-dessous. Les hooks s'exécutent toujours et peuvent bloquer les opérations si nécessaire. Sur Linux et macOS, Claude Code refuse de démarrer dans ce mode en tant que root ou sous `sudo` en dehors d'un [bac à sable reconnu](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode), et la requête échoue avant le premier tour.

285 285 

286<Warning>286<Warning>

287 À utiliser avec une extrême prudence. Claude a un accès système complet dans ce mode. À utiliser uniquement dans des environnements contrôlés où vous faites confiance à toutes les opérations possibles.287 À utiliser avec une extrême prudence. Claude a un accès système complet dans ce mode. À utiliser uniquement dans des environnements contrôlés où vous faites confiance à toutes les opérations possibles.

Details

13* **Hooks** : gestionnaires d'événements qui répondent à l'utilisation d'outils et à d'autres événements13* **Hooks** : gestionnaires d'événements qui répondent à l'utilisation d'outils et à d'autres événements

14* **Serveurs MCP** : intégrations d'outils externes via Model Context Protocol14* **Serveurs MCP** : intégrations d'outils externes via Model Context Protocol

15 15 

16Pour des informations complètes sur la structure des plugins et comment créer des plugins, consultez [Plugins](/docs/fr/plugins).16Pour des informations complètes sur la structure des plugins et comment créer des plugins, consultez [Plugins](/docs/fr/plugins/overview).

17 17 

18<h2 id="loading-plugins">18<h2 id="loading-plugins">

19 Chargement des plugins19 Chargement des plugins


21 21 

22Chargez les plugins en fournissant leurs chemins du système de fichiers local dans votre configuration d'options. Le champ `type` doit être `"local"`, la seule valeur que le SDK accepte. Le SDK supporte le chargement de plusieurs plugins à partir de différents emplacements.22Chargez les plugins en fournissant leurs chemins du système de fichiers local dans votre configuration d'options. Le champ `type` doit être `"local"`, la seule valeur que le SDK accepte. Le SDK supporte le chargement de plusieurs plugins à partir de différents emplacements.

23 23 

24Pour utiliser un plugin distribué via une [marketplace](/docs/fr/plugin-marketplaces) ou un référentiel distant, téléchargez-le d'abord et fournissez le chemin du répertoire local. Pour la disposition du répertoire dont un plugin a besoin, consultez la [référence de structure des plugins](#plugin-structure-reference) ci-dessous.24Pour utiliser un plugin distribué via une [marketplace](/docs/fr/plugins/overview) ou un référentiel distant, téléchargez-le d'abord et fournissez le chemin du répertoire local. Pour la disposition du répertoire dont un plugin a besoin, consultez la [référence de structure des plugins](#plugin-structure-reference) ci-dessous.

25 25 

26<CodeGroup>26<CodeGroup>

27 ```typescript TypeScript theme={null}27 ```typescript TypeScript theme={null}


138 ```138 ```

139</CodeGroup>139</CodeGroup>

140 140 

141<h2 id="using-plugin-skills">141<h2 id="use-plugin-skills">

142 Utilisation des skills des plugins142 Utilisation des skills des plugins

143</h2>143</h2>

144 144 


352 Voir aussi352 Voir aussi

353</h2>353</h2>

354 354 

355* [Plugins](/docs/fr/plugins) - Guide complet de développement de plugins355* [Plugins](/docs/fr/plugins/overview) - Guide complet de développement de plugins

356* [Référence des plugins](/docs/fr/plugins-reference) - Spécifications techniques356* [Référence des plugins](/docs/fr/plugins/manifest-reference) - Spécifications techniques

357* [Commands](/docs/fr/agent-sdk/skills#dispatch-commands-by-name) - Dispatching commands in the SDK357* [Commands](/docs/fr/agent-sdk/skills#dispatch-commands-by-name) - Dispatching commands in the SDK

358* [Subagents](/docs/fr/agent-sdk/subagents) - Travail avec des agents spécialisés358* [Subagents](/docs/fr/agent-sdk/subagents) - Travail avec des agents spécialisés

359* [Skills](/docs/fr/agent-sdk/skills) - Utilisation des Agent Skills359* [Skills](/docs/fr/agent-sdk/skills) - Utilisation des Agent Skills

Details

917| `cli_path` | `str \| Path \| None` | `None` | Chemin personnalisé vers l'exécutable CLI de Claude Code |917| `cli_path` | `str \| Path \| None` | `None` | Chemin personnalisé vers l'exécutable CLI de Claude Code |

918| `settings` | `str \| None` | `None` | Chemin vers un fichier de paramètres ou une chaîne JSON en ligne |918| `settings` | `str \| None` | `None` | Chemin vers un fichier de paramètres ou une chaîne JSON en ligne |

919| `add_dirs` | `list[str \| Path]` | `[]` | Répertoires supplémentaires auxquels Claude peut accéder. Le SDK passe chaque entrée à Claude Code comme `--add-dir`, donc avec la source de paramètre `project` Claude Code [charge également les compétences, commandes et sous-agents du répertoire](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) |919| `add_dirs` | `list[str \| Path]` | `[]` | Répertoires supplémentaires auxquels Claude peut accéder. Le SDK passe chaque entrée à Claude Code comme `--add-dir`, donc avec la source de paramètre `project` Claude Code [charge également les compétences, commandes et sous-agents du répertoire](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) |

920| `env` | `dict[str, str]` | `{}` | Variables d'environnement fusionnées au-dessus de l'environnement de processus hérité. Voir [Variables d'environnement](/docs/fr/env-vars) pour les variables que le CLI sous-jacent lit, et [Gérer les réponses API lentes ou bloquées](#handle-slow-or-stalled-api-responses) pour les variables liées aux délais d'expiration |920| `env` | `dict[str, str]` | `{}` | Variables d'environnement fusionnées au-dessus de l'environnement de processus hérité. Voir [Variables d'environnement](/docs/fr/env-vars) pour les variables que le CLI sous-jacent lit, et [Gérer les réponses API lentes ou bloquées](#handle-slow-or-stalled-api-responses) pour les variables liées aux délais d'expiration. Définissez `CLAUDE_AGENT_SDK_CLIENT_APP` pour identifier votre application dans l'en-tête User-Agent |

921| `extra_args` | `dict[str, str \| None]` | `{}` | Arguments CLI supplémentaires à passer directement au CLI |921| `extra_args` | `dict[str, str \| None]` | `{}` | Arguments CLI supplémentaires à passer directement au CLI |

922| `max_buffer_size` | `int \| None` | `None` | Octets maximum lors de la mise en buffer de la sortie standard du CLI |922| `max_buffer_size` | `int \| None` | `None` | Octets maximum lors de la mise en buffer de la sortie standard du CLI |

923| `debug_stderr` | `Any` | `sys.stderr` | *Déprécié* - Objet de type fichier pour la sortie de débogage. Utilisez plutôt le callback `stderr` |923| `debug_stderr` | `Any` | `sys.stderr` | *Déprécié* - Le SDK ignore cette valeur. Utilisez le callback `stderr` pour la sortie stderr du CLI |

924| `stderr` | `Callable[[str], None] \| None` | `None` | Fonction de callback pour la sortie stderr du CLI |924| `stderr` | `Callable[[str], None] \| None` | `None` | Fonction de callback pour la sortie stderr du CLI |

925| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Fonction de callback de permission d'outil, invoquée uniquement quand le [flux de permission](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) aboutit à un prompt. Non invoquée pour les appels pré-approuvés par `allowed_tools`, les règles d'autorisation, ou `permission_mode`. Une règle d'autorisation ne pré-approuve pas les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves). Voir [`CanUseTool`](#canusetool) pour les détails |925| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Fonction de callback de permission d'outil, invoquée uniquement quand le [flux de permission](/docs/fr/agent-sdk/permissions#how-permissions-are-evaluated) aboutit à un prompt. Non invoquée pour les appels pré-approuvés par `allowed_tools`, les règles d'autorisation, ou `permission_mode`. Une règle d'autorisation ne pré-approuve pas les [actions qu'aucun mode n'approuve automatiquement](/docs/fr/permission-modes#actions-no-mode-auto-approves). Voir [`CanUseTool`](#canusetool) pour les détails |

926| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configurations de hook pour intercepter les événements |926| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configurations de hook pour intercepter les événements |

927| `user` | `str \| None` | `None` | Identifiant utilisateur |927| `user` | `str \| None` | `None` | Sur les plateformes POSIX, le compte utilisateur du système d'exploitation sous lequel le sous-processus Claude Code s'exécute. Claude Code conserve l'environnement du processus parent, y compris `HOME`, et s'exécute dans `cwd` |

928| `include_partial_messages` | `bool` | `False` | Inclure les événements de streaming de messages partiels. Quand activé, les messages [`StreamEvent`](#streamevent) sont produits |928| `include_partial_messages` | `bool` | `False` | Inclure les événements de streaming de messages partiels. Quand activé, les messages [`StreamEvent`](#streamevent) sont produits |

929| `include_hook_events` | `bool` | `False` | Inclure les événements du cycle de vie des hooks dans le flux de messages en tant qu'objets `HookEventMessage` |929| `include_hook_events` | `bool` | `False` | Inclure les événements du cycle de vie des hooks dans le flux de messages en tant qu'objets `HookEventMessage` |

930| `forward_subagent_text` | `bool` | `False` | Transférez les blocs de texte et de réflexion des sous-agents dans le flux de messages. Sans cette option, Claude Code émet les blocs `tool_use` et `tool_result` des sous-agents mais pas le texte ou la réflexion. Nécessite Python Agent SDK 0.2.140 ou ultérieur |930| `forward_subagent_text` | `bool` | `False` | Transférez les blocs de texte et de réflexion des sous-agents dans le flux de messages. Sans cette option, Claude Code émet les blocs `tool_use` et `tool_result` des sous-agents mais pas le texte ou la réflexion. Nécessite Python Agent SDK 0.2.140 ou ultérieur |

Details

228 228 

2293. **`options`** : configuration de l'agent. Cet exemple utilise `allowedTools` pour pré-approuver `Read`, `Edit` et `Glob`, et `permissionMode: "acceptEdits"` pour approuver automatiquement les modifications de fichiers. Les autres options incluent `systemPrompt`, `mcpServers` et bien d'autres. Consultez toutes les options pour [Python](/docs/fr/agent-sdk/python#claudeagentoptions) ou [TypeScript](/docs/fr/agent-sdk/typescript#options).2293. **`options`** : configuration de l'agent. Cet exemple utilise `allowedTools` pour pré-approuver `Read`, `Edit` et `Glob`, et `permissionMode: "acceptEdits"` pour approuver automatiquement les modifications de fichiers. Les autres options incluent `systemPrompt`, `mcpServers` et bien d'autres. Consultez toutes les options pour [Python](/docs/fr/agent-sdk/python#claudeagentoptions) ou [TypeScript](/docs/fr/agent-sdk/typescript#options).

230 230 

231La boucle `async for` continue de s'exécuter tandis que Claude réfléchit, appelle des outils, observe les résultats et décide de la prochaine étape. Chaque itération produit un message : le raisonnement de Claude, un appel d'outil, un résultat d'outil ou le résultat final. Le SDK gère l'orchestration (exécution des outils, gestion du contexte, tentatives) afin que vous consommiez simplement le flux. La boucle se termine lorsque Claude termine la tâche ou rencontre une erreur.231La boucle `async for` continue de s'exécuter tandis que Claude réfléchit, appelle des outils, observe les résultats et décide de la prochaine étape. Chaque itération produit un message : le raisonnement de Claude, un appel d'outil, un résultat d'outil ou le résultat final. Le SDK gère l'orchestration, l'exécution des outils, la gestion du contexte et les tentatives, afin que vous consommiez simplement le flux. La boucle se termine lorsque Claude termine la tâche ou rencontre une erreur.

232 232 

233La gestion des messages à l'intérieur de la boucle filtre la sortie lisible par l'homme. Sans filtrage, vous verriez des objets de message bruts incluant l'initialisation du système et l'état interne, ce qui est utile pour le débogage mais bruyant autrement.233La gestion des messages à l'intérieur de la boucle filtre la sortie lisible par l'homme. Sans filtrage, vous verriez des objets de message bruts incluant l'initialisation du système et l'état interne, ce qui est utile pour le débogage mais bruyant autrement.

234 234 


275C'est ce qui rend le SDK Agent différent : Claude exécute les outils directement au lieu de vous demander de les implémenter.275C'est ce qui rend le SDK Agent différent : Claude exécute les outils directement au lieu de vous demander de les implémenter.

276 276 

277<Note>277<Note>

278 Si vous voyez une erreur d'authentification telle que `Not logged in` ou `Invalid API key`, assurez-vous d'avoir défini la variable d'environnement `ANTHROPIC_API_KEY` dans le shell où vous exécutez votre agent. Le SDK ne charge pas les fichiers `.env` automatiquement. Consultez le [guide de dépannage complet](/docs/fr/troubleshooting) pour plus d'aide.278 Si vous voyez une erreur d'authentification telle que `Not logged in` ou `Invalid API key`, assurez-vous d'avoir défini la variable d'environnement `ANTHROPIC_API_KEY` dans le shell où vous exécutez votre agent. Le SDK ne charge pas les fichiers `.env` automatiquement.

279 

280 Pour connaître les causes et les solutions de ces erreurs d'authentification et d'autres, consultez [Erreurs d'authentification](/docs/fr/errors#authentication-errors) dans la référence des erreurs.

279</Note>281</Note>

280 282 

281<h3 id="try-other-prompts">283<h3 id="try-other-prompts">


385* **[Serveurs MCP](/docs/fr/agent-sdk/mcp)** : connectez-vous à des bases de données, des navigateurs, des API et d'autres systèmes externes387* **[Serveurs MCP](/docs/fr/agent-sdk/mcp)** : connectez-vous à des bases de données, des navigateurs, des API et d'autres systèmes externes

386* **[Hébergement](/docs/fr/agent-sdk/hosting)** : déployez des agents sur Docker, le cloud et CI/CD388* **[Hébergement](/docs/fr/agent-sdk/hosting)** : déployez des agents sur Docker, le cloud et CI/CD

387* **[Agents d'exemple](https://github.com/anthropics/claude-agent-sdk-demos)** : consultez des exemples complets : assistant e-mail, agent de recherche et bien d'autres389* **[Agents d'exemple](https://github.com/anthropics/claude-agent-sdk-demos)** : consultez des exemples complets : assistant e-mail, agent de recherche et bien d'autres

388* **[Dépannage](/docs/fr/agent-sdk/troubleshooting)** : corrigez les erreurs du SDK Agent par le message exact que vous voyez390* **[Dépannage](/docs/fr/agent-sdk/troubleshooting)** : corrigez les erreurs quand l'interface de ligne de commande ne démarre pas ou se ferme, ou quand un résultat arrive sans sortie structurée

Details

4 4 

5# Dépanner le SDK Agent5# Dépanner le SDK Agent

6 6 

7> Corrigez les erreurs du SDK Agent en fonction du message exact que vous voyez, avec la cause et la correction pour chaque erreur dans les SDK TypeScript et Python.7> Corrigez les erreurs du SDK Agent lorsque la CLI Claude Code ne démarre pas, le processus CLI se termine ou un résultat réussi arrive sans sortie structurée.

8 8 

9Les entrées de cette page sont indexées selon l'erreur que vous voyez. Chacune indique la cause et ce qu'il faut faire.9Cette page couvre les erreurs du SDK Agent au démarrage de la CLI, à la sortie du processus CLI et aux sorties structurées. Les entrées de cette page sont indexées selon l'erreur que vous voyez. Chacune indique la cause et ce qu'il faut faire.

10 

11Les symptômes liés à une fonctionnalité, comme un hook qui ne se déclenche pas ou une skill qui n'est pas utilisée, ont une section de dépannage sur la page de cette fonctionnalité. Le tableau nomme la section ou la page qui couvre chaque symptôme :

12 

13| Symptôme | Aller à |

14| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------- |

15| Skills non trouvées, une skill non utilisée, erreur `Invalid skill name` | [Dépannage des skills](/docs/fr/agent-sdk/skills#troubleshooting) |

16| Le serveur MCP affiche le statut `failed`, les outils ne sont pas appelés, les délais d'expiration de la connexion, la sortie de l'outil qui dépasse le nombre maximum de tokens autorisés | [Dépannage MCP](/docs/fr/agent-sdk/mcp#troubleshooting) |

17| Plugin ne se charge pas, les skills du plugin n'apparaissent pas | [Dépannage des plugins](/docs/fr/agent-sdk/plugins#troubleshooting) |

18| Claude ne délègue pas aux sous-agents, les agents basés sur le système de fichiers ne se chargent pas | [Dépannage des sous-agents](/docs/fr/agent-sdk/subagents#troubleshooting) |

19| Les options de checkpointing ne sont pas reconnues, les messages utilisateur sans UUID, `No file checkpoint found`, `File rewinding is not enabled`, `ProcessTransport is not ready for writing` | [Dépannage du checkpointing de fichiers](/docs/fr/agent-sdk/file-checkpointing#troubleshooting) |

20| Hook ne se déclenche pas, le matcher ne filtre pas comme prévu, délai d'expiration du hook, outil bloqué de manière inattendue, entrée modifiée non appliquée, hooks de session non disponibles en Python, invites de permission de sous-agent se multipliant, boucles de hook récursives avec sous-agents, `systemMessage` n'apparaissant pas dans la sortie | [Corriger les problèmes courants](/docs/fr/agent-sdk/hooks#fix-common-issues) sur la page des hooks |

21| Un agent qui fonctionne sur votre machine échoue dans un service déployé ou un conteneur | [Dépanner les défaillances de déploiement](/docs/fr/agent-sdk/hosting#troubleshoot-deployment-failures) |

22| `Not logged in`, `Invalid API key`, `API Error`, `429`, `There's an issue with the selected model` | [Référence des erreurs](/docs/fr/errors#find-your-error) |

23| `CLINotFoundError`, `CLIConnectionError`, `ProcessError`, `Claude Code process exited with code N`, `Claude Code returned an error result`, `structured_output` est `None` | [Démarrage de la CLI](#cli-startup), [Sortie du processus CLI](#cli-process-exit) et [Sorties structurées](#structured-outputs) sur cette page |

10 24 

11<h2 id="cli-startup">25<h2 id="cli-startup">

12 Démarrage du CLI26 Démarrage du CLI

agent-teams.md +1 −1

Details

118 118 

119La valeur par défaut est `"in-process"`. Définissez `"auto"` pour activer les volets divisés lorsque vous êtes déjà en train de s'exécuter dans une session tmux, ou lorsque votre terminal est iTerm2 avec le CLI `it2` installé, en revenant à in-process sinon. Le paramètre `"tmux"` active le mode volets divisés et détecte automatiquement s'il faut utiliser tmux ou iTerm2 en fonction de votre terminal.119La valeur par défaut est `"in-process"`. Définissez `"auto"` pour activer les volets divisés lorsque vous êtes déjà en train de s'exécuter dans une session tmux, ou lorsque votre terminal est iTerm2 avec le CLI `it2` installé, en revenant à in-process sinon. Le paramètre `"tmux"` active le mode volets divisés et détecte automatiquement s'il faut utiliser tmux ou iTerm2 en fonction de votre terminal.

120 120 

121À partir de la v2.1.186, définissez `"iterm2"` pour utiliser explicitement les volets divisés natifs d'iTerm2. Ce mode nécessite le CLI [`it2`](https://github.com/mkusaka/it2) et affiche une erreur avec la commande d'installation si `it2` est manquant. L'invite de configuration qui propose d'installer `it2` ou de basculer vers tmux apparaît sous `"auto"` ou `"tmux"` lorsque votre terminal est iTerm2 et que tmux est disponible comme solution de secours.121Définissez `"iterm2"` pour utiliser explicitement les volets divisés natifs d'iTerm2. Ce mode nécessite le CLI [`it2`](https://github.com/mkusaka/it2) et affiche une erreur avec la commande d'installation si `it2` est manquant. L'invite de configuration qui propose d'installer `it2` ou de basculer vers tmux apparaît sous `"auto"` ou `"tmux"` lorsque votre terminal est iTerm2 et que tmux est disponible comme solution de secours.

122 122 

123Pour remplacer la valeur par défaut, définissez [`teammateMode`](/docs/fr/settings-reference#teammatemode) dans `~/.claude/settings.json` :123Pour remplacer la valeur par défaut, définissez [`teammateMode`](/docs/fr/settings-reference#teammatemode) dans `~/.claude/settings.json` :

124 124 

agent-view.md +2 −2

Details

724| :----------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |724| :----------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

725| [`--settings <file-or-json>`](/docs/fr/settings) | Remplacer les paramètres pour la vue agent et les sessions lancées |725| [`--settings <file-or-json>`](/docs/fr/settings) | Remplacer les paramètres pour la vue agent et les sessions lancées |

726| [`--add-dir <path>`](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) | Accorder l'accès aux fichiers à un répertoire supplémentaire |726| [`--add-dir <path>`](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) | Accorder l'accès aux fichiers à un répertoire supplémentaire |

727| [`--plugin-dir <path>`](/docs/fr/plugins) | Charger un plugin à partir d'un répertoire local |727| [`--plugin-dir <path>`](/docs/fr/plugins/create#load-a-directory-or-archive-for-one-session) | Charger un plugin à partir d'un répertoire local |

728| [`--mcp-config <file-or-json>`](/docs/fr/mcp) | Charger les serveurs MCP à partir d'un fichier de configuration ou d'une chaîne JSON |728| [`--mcp-config <file-or-json>`](/docs/fr/mcp) | Charger les serveurs MCP à partir d'un fichier de configuration ou d'une chaîne JSON |

729| `--strict-mcp-config` | Utiliser uniquement les serveurs MCP de `--mcp-config`, en ignorant les autres configurations MCP. Voir [Contrôle exclusif avec managed-mcp.json](/docs/fr/managed-mcp#exclusive-control-with-managed-mcp-json) pour ce que le drapeau fait sous un fichier MCP géré |729| `--strict-mcp-config` | Utiliser uniquement les serveurs MCP de `--mcp-config`, en ignorant les autres configurations MCP. Voir [Contrôle exclusif avec managed-mcp.json](/docs/fr/managed-mcp#exclusive-control-with-managed-mcp-json) pour ce que le drapeau fait sous un fichier MCP géré |

730 730 


1062| v2.1.257 | Une invite stockée avec `Ctrl+S` à l'intérieur d'une session en arrière-plan ouverte [est conservée avec la session](#what-persists-across-restarts), donc `Ctrl+S` la restaure après l'arrêt et le redémarrage du processus de la session. Avant cette version, le stockage vivait seulement dans le processus en cours d'exécution et était perdu quand la session restait inactive assez longtemps pour que son processus s'arrête, ou quand il était arrêté puis rouvert. |1062| v2.1.257 | Une invite stockée avec `Ctrl+S` à l'intérieur d'une session en arrière-plan ouverte [est conservée avec la session](#what-persists-across-restarts), donc `Ctrl+S` la restaure après l'arrêt et le redémarrage du processus de la session. Avant cette version, le stockage vivait seulement dans le processus en cours d'exécution et était perdu quand la session restait inactive assez longtemps pour que son processus s'arrête, ou quand il était arrêté puis rouvert. |

1063| v2.1.251 | Dans une session en arrière-plan qui n'a pas [déménagé dans un worktree](#how-file-edits-are-isolated), Claude et les sous-agents qu'il génère peuvent modifier les fichiers à l'intérieur d'un worktree git lié. |1063| v2.1.251 | Dans une session en arrière-plan qui n'a pas [déménagé dans un worktree](#how-file-edits-are-isolated), Claude et les sous-agents qu'il génère peuvent modifier les fichiers à l'intérieur d'un worktree git lié. |

1064| v2.1.251 | Claude Code transfère une passerelle de fournisseur cloud exportée dans le shell d'où vous dispatchez, comme `ANTHROPIC_VERTEX_BASE_URL` ou `ANTHROPIC_BEDROCK_BASE_URL` avec son drapeau de contournement d'authentification, vers [le worker de la session](#llm-gateway) dans les mêmes conditions que `ANTHROPIC_BASE_URL`. Avant cette version, si vous mettiez en arrière-plan ou dispatchiez à partir d'un shell authentifié uniquement via une telle passerelle, chaque requête que la session faisait échouait, parce que le point de terminaison et le drapeau étaient supprimés de son environnement. |1064| v2.1.251 | Claude Code transfère une passerelle de fournisseur cloud exportée dans le shell d'où vous dispatchez, comme `ANTHROPIC_VERTEX_BASE_URL` ou `ANTHROPIC_BEDROCK_BASE_URL` avec son drapeau de contournement d'authentification, vers [le worker de la session](#llm-gateway) dans les mêmes conditions que `ANTHROPIC_BASE_URL`. Avant cette version, si vous mettiez en arrière-plan ou dispatchiez à partir d'un shell authentifié uniquement via une telle passerelle, chaque requête que la session faisait échouait, parce que le point de terminaison et le drapeau étaient supprimés de son environnement. |

1065| v2.1.251 | Quand une session en arrière-plan démarre tandis qu'un autre processus Claude Code actualise une [place de marché de plugins](/docs/fr/plugin-marketplaces), comme une session sœur exécutant la [mise à jour automatique de la place de marché](/docs/fr/discover-plugins#configure-auto-updates), Claude Code garde les plugins de cette place de marché disponibles. Avant cette version, une telle session pouvait démarrer sans aucune des compétences, agents, hooks et serveurs MCP de cette place de marché et rester ainsi pendant toute son exécution. |1065| v2.1.251 | Quand une session en arrière-plan démarre tandis qu'un autre processus Claude Code actualise une [place de marché de plugins](/docs/fr/plugins/overview), comme une session sœur exécutant la [mise à jour automatique de la place de marché](/docs/fr/plugins/install#keep-plugins-updated), Claude Code garde les plugins de cette place de marché disponibles. Avant cette version, une telle session pouvait démarrer sans aucune des compétences, agents, hooks et serveurs MCP de cette place de marché et rester ainsi pendant toute son exécution. |

1066| v2.1.248 | `Shift+Enter` dans l'[entrée de dispatch](#keyboard-shortcuts) insère une nouvelle ligne, correspondant à l'invite principale, et `Ctrl+Enter` dispatch et attache immédiatement dans les terminaux où l'overlay `?` répertorie `ctrl+enter to start and open`. Avant cette version, `Shift+Enter` dispatchait et attachait. |1066| v2.1.248 | `Shift+Enter` dans l'[entrée de dispatch](#keyboard-shortcuts) insère une nouvelle ligne, correspondant à l'invite principale, et `Ctrl+Enter` dispatch et attache immédiatement dans les terminaux où l'overlay `?` répertorie `ctrl+enter to start and open`. Avant cette version, `Shift+Enter` dispatchait et attachait. |

1067| v2.1.248 | [Supprimer une session](#what-deleting-a-session-removes) réussit quand les commits du worktree sont déjà sur la copie locale de la branche par défaut de votre remote `origin` et votre checkout principal a cette branche extraite ; avant cette version, la suppression était refusée avec `has commits that are not pushed anywhere`. |1067| v2.1.248 | [Supprimer une session](#what-deleting-a-session-removes) réussit quand les commits du worktree sont déjà sur la copie locale de la branche par défaut de votre remote `origin` et votre checkout principal a cette branche extraite ; avant cette version, la suppression était refusée avec `has commits that are not pushed anywhere`. |

1068| v2.1.248 | Une session mise en arrière-plan avec `←` ou `/background` tient le [`git worktree lock`](/docs/fr/worktrees#clean-up-subagent-and-background-session-worktrees) sur son worktree tandis qu'elle s'exécute ; avant cette version, mettre en arrière-plan libérait le verrou, et le nettoyage ou `git worktree remove` pouvait supprimer le worktree sous la session en cours d'exécution. |1068| v2.1.248 | Une session mise en arrière-plan avec `←` ou `/background` tient le [`git worktree lock`](/docs/fr/worktrees#clean-up-subagent-and-background-session-worktrees) sur son worktree tandis qu'elle s'exécute ; avant cette version, mettre en arrière-plan libérait le verrou, et le nettoyage ou `git worktree remove` pouvait supprimer le worktree sous la session en cours d'exécution. |

agents.md +1 −1

Details

22 22 

23* [Les worktrees](/docs/fr/worktrees) donnent à chaque session un checkout git séparé, de sorte que les sessions parallèles ne modifient jamais les mêmes fichiers. Utilisez-les pour les sessions que vous exécutez vous-même. Une session que vous dispatchez depuis la vue agent [se déplace dans son propre worktree avant qu'elle ne modifie les fichiers](/docs/fr/agent-view#how-file-edits-are-isolated), et les sous-agents que vous générez peuvent chacun en obtenir un aussi.23* [Les worktrees](/docs/fr/worktrees) donnent à chaque session un checkout git séparé, de sorte que les sessions parallèles ne modifient jamais les mêmes fichiers. Utilisez-les pour les sessions que vous exécutez vous-même. Une session que vous dispatchez depuis la vue agent [se déplace dans son propre worktree avant qu'elle ne modifie les fichiers](/docs/fr/agent-view#how-file-edits-are-isolated), et les sous-agents que vous générez peuvent chacun en obtenir un aussi.

24* [La messagerie inter-sessions](/docs/fr/cross-session-messaging) permet à Claude de lister et de communiquer avec vos autres sessions Claude Code sur cette machine, sur une autre machine ou [dans le cloud](/docs/fr/claude-code-on-the-web), de sorte que les sessions que vous exécutez vous-même peuvent transmettre les résultats et l'état entre elles.24* [La messagerie inter-sessions](/docs/fr/cross-session-messaging) permet à Claude de lister et de communiquer avec vos autres sessions Claude Code sur cette machine, sur une autre machine ou [dans le cloud](/docs/fr/claude-code-on-the-web), de sorte que les sessions que vous exécutez vous-même peuvent transmettre les résultats et l'état entre elles.

25* [`/batch`](/docs/fr/commands) est une [compétence](/docs/fr/skills) qui a Claude diviser un grand changement en 5 à 30 sous-agents isolés par worktree qui ouvrent chacun une pull request. C'est une utilisation packagée de sous-agents et de worktrees, pas un style de coordination séparé.25* [`/batch`](/docs/fr/commands) est une [compétence](/docs/fr/skills) qui a Claude diviser un grand changement en 5 à 30 sous-agents isolés par worktree. C'est une utilisation packagée de sous-agents et de worktrees, pas un style de coordination séparé.

26 26 

27Quelques autres fonctionnalités exécutent Claude sans que vous conduisiez chaque étape, mais elles résolvent un problème différent de celui de diviser le travail entre les agents :27Quelques autres fonctionnalités exécutent Claude sans que vous conduisiez chaque étape, mais elles résolvent un problème différent de celui de diviser le travail entre les agents :

28 28 

Details

518 Utiliser le point de terminaison Mantle518 Utiliser le point de terminaison Mantle

519</h2>519</h2>

520 520 

521Mantle est un point de terminaison Amazon Bedrock qui sert les modèles Claude via la forme API Anthropic native plutôt que l'API Invoke Bedrock. Il utilise les mêmes [identifiants AWS](#2-configure-aws-credentials), [autorisations IAM](#iam-configuration), et configuration [`awsAuthRefresh`](#advanced-credential-configuration).521Mantle est un point de terminaison Amazon Bedrock qui sert les modèles Claude via la forme API Anthropic native plutôt que l'API Invoke Bedrock. Il utilise les mêmes [identifiants AWS](#2-configure-aws-credentials) et configuration [`awsAuthRefresh`](#advanced-credential-configuration).

522 

523Mantle possède ses propres actions IAM sous le préfixe `bedrock-mantle:`, donc les actions `bedrock:` dans la [configuration IAM](#iam-configuration) ne le couvrent pas. Accordez à votre identité IAM `bedrock-mantle:CreateInference` pour l'inférence et `bedrock-mantle:CountTokens` pour le comptage des jetons. Consultez [Effectuer des demandes d'inférence](https://docs.aws.amazon.com/bedrock/latest/userguide/inference.html) et [Compter les jetons](https://docs.aws.amazon.com/bedrock/latest/userguide/count-tokens.html) dans la documentation AWS, et la [référence d'autorisation de service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockpoweredbyawsmantle.html) pour chaque action Mantle.

522 524 

523<h3 id="enable-mantle">525<h3 id="enable-mantle">

524 Activer Mantle526 Activer Mantle


670 672 

671Si `/status` n'affiche pas `Amazon Bedrock (Mantle)` après avoir défini `CLAUDE_CODE_USE_MANTLE`, la variable n'atteint pas le processus. Confirmez qu'elle est exportée dans le shell où vous avez lancé `claude`, ou définissez-la dans le bloc `env` de votre [fichier de paramètres](/docs/fr/settings).673Si `/status` n'affiche pas `Amazon Bedrock (Mantle)` après avoir défini `CLAUDE_CODE_USE_MANTLE`, la variable n'atteint pas le processus. Confirmez qu'elle est exportée dans le shell où vous avez lancé `claude`, ou définissez-la dans le bloc `env` de votre [fichier de paramètres](/docs/fr/settings).

672 674 

673Un `403` du point de terminaison Mantle avec des identifiants valides signifie que votre compte AWS n'a pas reçu l'accès au modèle que vous avez demandé. Contactez votre équipe de compte AWS pour demander l'accès.675Ce qu'un `403` du point de terminaison Mantle signifie dépend de si l'erreur nomme une action IAM :

676 

677* Si l'erreur nomme une action `bedrock-mantle:`, accordez cette action à votre identité IAM.

678* Si l'erreur ne nomme aucune action et que vos identifiants sont valides, votre compte AWS n'a pas reçu l'accès au modèle que vous avez demandé. Contactez votre équipe de compte AWS pour demander l'accès.

674 679 

675Un `400` qui nomme l'ID du modèle signifie que ce modèle n'est pas servi sur Mantle. Mantle a sa propre gamme de modèles distincte du catalogue Amazon Bedrock standard, donc les ID de profil d'inférence tels que `us.anthropic.claude-sonnet-4-6` ne fonctionneront pas. Utilisez un ID au format Mantle, ou activez [les deux points de terminaison](#run-mantle-alongside-the-invoke-api) afin que Claude Code achemine chaque demande vers le point de terminaison où le modèle est disponible.680Un `400` qui nomme l'ID du modèle signifie que ce modèle n'est pas servi sur Mantle. Mantle a sa propre gamme de modèles distincte du catalogue Amazon Bedrock standard, donc les ID de profil d'inférence tels que `us.anthropic.claude-sonnet-4-6` ne fonctionneront pas. Utilisez un ID au format Mantle, ou activez [les deux points de terminaison](#run-mantle-alongside-the-invoke-api) afin que Claude Code achemine chaque demande vers le point de terminaison où le modèle est disponible.

676 681 

Details

334 Exécutez `/plugin` pour parcourir la marketplace. Les plugins ajoutent des skills, des outils et des intégrations sans configuration.334 Exécutez `/plugin` pour parcourir la marketplace. Les plugins ajoutent des skills, des outils et des intégrations sans configuration.

335</Tip>335</Tip>

336 336 

337Les [plugins](/docs/fr/plugins) regroupent les skills, les hooks, les subagents et les serveurs MCP dans une seule unité installable de la communauté et d'Anthropic. Si vous travaillez avec un langage typé, installez un [plugin d'intelligence de code](/docs/fr/discover-plugins#code-intelligence) pour donner à Claude une navigation de symboles précise et une détection d'erreur automatique après les éditions.337Les [plugins](/docs/fr/plugins/overview) regroupent les skills, les hooks, les subagents et les serveurs MCP dans une seule unité installable de la communauté et d'Anthropic. Si vous travaillez avec un langage typé, installez un [plugin d'intelligence de code](/docs/fr/plugins/code-intelligence) pour donner à Claude une navigation de symboles précise et une détection d'erreur automatique après les éditions.

338 338 

339Pour des conseils sur le choix entre les skills, les subagents, les hooks et MCP, consultez [Étendre Claude Code](/docs/fr/features-overview#match-features-to-your-goal).339Pour des conseils sur le choix entre les skills, les subagents, les hooks et MCP, consultez [Étendre Claude Code](/docs/fr/features-overview#match-features-to-your-goal).

340 340 


541 Bouclez à travers les tâches en appelant `claude -p` pour chacune. Utilisez `--allowedTools` pour délimiter les permissions pour les opérations par lot.541 Bouclez à travers les tâches en appelant `claude -p` pour chacune. Utilisez `--allowedTools` pour délimiter les permissions pour les opérations par lot.

542</Tip>542</Tip>

543 543 

544Pour les migrations ou analyses à grande échelle, vous pouvez distribuer le travail sur de nombreuses invocations Claude parallèles. Dans un référentiel git, exécutez [`/batch <instruction>`](/docs/fr/commands#all-commands) pour que Claude divise la modification sur 5 à 30 sous-agents. Chaque sous-agent travaille dans son propre worktree et ouvre une demande de tirage. Pour piloter le fan-out à partir de votre propre script à la place, bouclez sur `claude -p` :544Pour les migrations ou analyses à grande échelle, vous pouvez distribuer le travail sur de nombreuses invocations Claude parallèles. Exécutez [`/batch <instruction>`](/docs/fr/commands#all-commands) pour que Claude divise la modification sur 5 à 30 sous-agents. Chaque sous-agent travaille dans son propre worktree. Pour piloter le fan-out à partir de votre propre script à la place, bouclez sur `claude -p` :

545 545 

546<Steps>546<Steps>

547 <Step title="Générez une liste de tâches">547 <Step title="Générez une liste de tâches">

channels.md +6 −6

Details

45 Si l'installation échoue, faites correspondre le message que Claude Code signale :45 Si l'installation échoue, faites correspondre le message que Claude Code signale :

46 46 

47 * `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.47 * `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

48 * Le plugin est [introuvable dans la marketplace](/docs/fr/discover-plugins#install-plugins) : vérifiez le nom du plugin.48 * Le plugin est [introuvable dans la marketplace](/docs/fr/plugins/install#install-a-plugin) : vérifiez le nom du plugin.

49 49 

50 Lorsque l'installation vous demande une portée d'installation, choisissez l'option de portée utilisateur pour que le plugin soit disponible dans tous vos projets. Vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications de plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) pour rendre la commande de configuration du plugin disponible.50 Lorsque l'installation vous demande une portée d'installation, choisissez l'option de portée utilisateur pour que le plugin soit disponible dans tous vos projets. Vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications de plugin sans redémarrer](/docs/fr/plugins/cli-reference#reload-plugins) pour rendre la commande de configuration du plugin disponible.

51 </Step>51 </Step>

52 52 

53 <Step title="Configurer votre jeton">53 <Step title="Configurer votre jeton">


123 Si l'installation échoue, faites correspondre le message que Claude Code signale :123 Si l'installation échoue, faites correspondre le message que Claude Code signale :

124 124 

125 * `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.125 * `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

126 * Le plugin est [introuvable dans la marketplace](/docs/fr/discover-plugins#install-plugins) : vérifiez le nom du plugin.126 * Le plugin est [introuvable dans la marketplace](/docs/fr/plugins/install#install-a-plugin) : vérifiez le nom du plugin.

127 127 

128 Lorsque l'installation vous demande une portée d'installation, choisissez l'option de portée utilisateur pour que le plugin soit disponible dans tous vos projets. Vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications de plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) pour rendre la commande de configuration du plugin disponible.128 Lorsque l'installation vous demande une portée d'installation, choisissez l'option de portée utilisateur pour que le plugin soit disponible dans tous vos projets. Vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications de plugin sans redémarrer](/docs/fr/plugins/cli-reference#reload-plugins) pour rendre la commande de configuration du plugin disponible.

129 </Step>129 </Step>

130 130 

131 <Step title="Configurer votre jeton">131 <Step title="Configurer votre jeton">


188 Si l'installation échoue, faites correspondre le message que Claude Code signale :188 Si l'installation échoue, faites correspondre le message que Claude Code signale :

189 189 

190 * `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.190 * `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

191 * Le plugin est [introuvable dans la marketplace](/docs/fr/discover-plugins#install-plugins) : vérifiez le nom du plugin.191 * Le plugin est [introuvable dans la marketplace](/docs/fr/plugins/install#install-a-plugin) : vérifiez le nom du plugin.

192 192 

193 Lorsque l'installation vous demande une portée d'installation, choisissez l'option de portée utilisateur pour que le plugin soit disponible dans tous vos projets. Si le résumé d'installation signale `Run /reload-plugins to activate.`, vous pouvez ignorer cela ici, car le redémarrage à l'étape suivante récupère le plugin.193 Lorsque l'installation vous demande une portée d'installation, choisissez l'option de portée utilisateur pour que le plugin soit disponible dans tous vos projets. Si le résumé d'installation signale `Run /reload-plugins to activate.`, vous pouvez ignorer cela ici, car le redémarrage à l'étape suivante récupère le plugin.

194 </Step>194 </Step>


245 Si l'installation échoue, faites correspondre le message que Claude Code signale :245 Si l'installation échoue, faites correspondre le message que Claude Code signale :

246 246 

247 * `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.247 * `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

248 * Le plugin [n'est pas trouvé dans la marketplace](/docs/fr/discover-plugins#install-plugins) : vérifiez le nom du plugin.248 * Le plugin [n'est pas trouvé dans la marketplace](/docs/fr/plugins/install#install-a-plugin) : vérifiez le nom du plugin.

249 249 

250 Lorsque l'installation demande une portée d'installation, choisissez l'option de portée utilisateur pour que le plugin soit disponible dans tous vos projets.250 Lorsque l'installation demande une portée d'installation, choisissez l'option de portée utilisateur pour que le plugin soit disponible dans tous vos projets.

251 251 

Details

191claude --dangerously-load-development-channels server:webhook191claude --dangerously-load-development-channels server:webhook

192```192```

193 193 

194Le contournement est par entrée. Combiner ce drapeau avec `--channels` n'étend pas le contournement aux entrées `--channels`. Pendant l'aperçu de recherche, la liste d'approbation est organisée par Anthropic, donc votre canal reste sur le drapeau de développement pendant que vous le construisez et le testez.194Le contournement est par entrée. Combiner ce drapeau avec `--channels` n'étend pas le contournement aux entrées `--channels`. Pendant l'aperçu de recherche, votre canal n'est pas sur la liste d'approbation approuvée, donc il reste sur le drapeau de développement pendant que vous le construisez et le testez.

195 195 

196<Note>196<Note>

197 Ce drapeau ignore uniquement la liste d'approbation. La politique d'organisation `channelsEnabled` s'applique toujours. Ne l'utilisez pas pour exécuter des canaux de sources non fiables.197 Ce drapeau ignore uniquement la liste d'approbation. La politique d'organisation `channelsEnabled` s'applique toujours. Ne l'utilisez pas pour exécuter des canaux de sources non fiables.


802 Empaqueter en tant que plugin802 Empaqueter en tant que plugin

803</h2>803</h2>

804 804 

805Pour rendre votre canal installable et partageable, enveloppez-le dans un [plugin](/docs/fr/plugins) et publiez-le sur un [marketplace](/docs/fr/plugin-marketplaces). Les utilisateurs l'installent avec `/plugin install`, puis l'activent par session avec `--channels plugin:<name>@<marketplace>`.805Pour rendre votre canal installable et partageable, enveloppez-le dans un [plugin](/docs/fr/plugins/overview) et publiez-le sur un [marketplace](/docs/fr/plugins/overview). Les utilisateurs l'installent avec `/plugin install`, puis l'activent par session avec `--channels plugin:<name>@<marketplace>`.

806 806 

807Un canal publié sur votre propre marketplace a toujours besoin de `--dangerously-load-development-channels` pour s'exécuter, car il n'est pas sur la [liste d'approbation](/docs/fr/channels#supported-channels). La liste d'approbation par défaut est les plugins de canal dans `claude-plugins-official`, que Anthropic organise à sa discrétion. Les [formulaires de soumission intégrés à l'application](/docs/fr/plugins#submit-your-plugin-to-the-community-marketplace) ajoutent des plugins au marketplace communautaire, qui n'est pas sur la liste d'approbation des canaux.807Un canal publié sur votre propre marketplace a toujours besoin de `--dangerously-load-development-channels` pour s'exécuter, car il n'est pas sur la [liste d'approbation](/docs/fr/channels#supported-channels). La liste d'approbation par défaut est les plugins de canal dans `claude-plugins-official`. Les [formulaires de soumission intégrés à l'application](/docs/fr/plugins/publish#submit-to-the-community-marketplace) ajoutent des plugins au marketplace communautaire, qui n'est pas sur la liste d'approbation des canaux.

808 808 

809Si vous travaillez avec un contact partenaire Anthropic, contactez-le pour coordonner une inscription au marketplace officiel. Sur les plans Team et Enterprise, un administrateur peut plutôt inclure votre plugin dans la liste [`allowedChannelPlugins`](/docs/fr/channels#restrict-which-channel-plugins-can-run) de l'organisation, qui remplace la liste d'approbation Anthropic par défaut.809Si vous travaillez avec un contact partenaire Anthropic, contactez-le pour coordonner une inscription au marketplace officiel. Sur les plans Team et Enterprise, un administrateur peut plutôt inclure votre plugin dans la liste [`allowedChannelPlugins`](/docs/fr/channels#restrict-which-channel-plugins-can-run) de l'organisation, qui remplace la liste d'approbation Anthropic par défaut.

810 810 


815* [Canaux](/docs/fr/channels) pour installer et utiliser Telegram, Discord, iMessage ou la démo fakechat, et pour activer les canaux pour une organisation Team ou Enterprise815* [Canaux](/docs/fr/channels) pour installer et utiliser Telegram, Discord, iMessage ou la démo fakechat, et pour activer les canaux pour une organisation Team ou Enterprise

816* [Implémentations de canaux fonctionnels](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) pour le code serveur complet avec flux d'appairage, outils de réponse et pièces jointes816* [Implémentations de canaux fonctionnels](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) pour le code serveur complet avec flux d'appairage, outils de réponse et pièces jointes

817* [MCP](/docs/fr/mcp) pour le protocole sous-jacent que les serveurs de canal implémentent817* [MCP](/docs/fr/mcp) pour le protocole sous-jacent que les serveurs de canal implémentent

818* [Plugins](/docs/fr/plugins) pour empaqueter votre canal afin que les utilisateurs puissent l'installer avec `/plugin install`818* [Plugins](/docs/fr/plugins/overview) pour empaqueter votre canal afin que les utilisateurs puissent l'installer avec `/plugin install`

Details

54 Rembobiner au-delà d'une conversation effacée54 Rembobiner au-delà d'une conversation effacée

55</h4>55</h4>

56 56 

57Si vous avez exécuté `/clear` plus tôt dans le même processus Claude Code, le menu de rembobinage affiche une entrée supplémentaire en haut de la liste intitulée `/resume <session-id> (previous session)`. Sélectionnez-la pour reprendre la conversation qui était active avant l'exécution de `/clear`. L'entrée est disponible jusqu'à ce que vous quittiez Claude Code ou repreniez une session différente, et nécessite Claude Code v2.1.191 ou version ultérieure. Sur les versions antérieures, exécutez `/resume` et choisissez la session précédente dans la liste à la place.57Si vous avez exécuté `/clear` plus tôt dans le même processus Claude Code, le menu de rembobinage affiche une entrée supplémentaire en haut de la liste intitulée `/resume <session-id> (previous session)`. Sélectionnez-la pour reprendre la conversation qui était active avant l'exécution de `/clear`. L'entrée est disponible jusqu'à ce que vous quittiez Claude Code ou repreniez une session différente.

58 58 

59<h4 id="guide-a-summary">59<h4 id="guide-a-summary">

60 Guider un résumé60 Guider un résumé

Details

452 Paramètres que les verrous ne couvrent pas452 Paramètres que les verrous ne couvrent pas

453</h4>453</h4>

454 454 

455Quatre paramètres fournis par le parent passent le filtre même avec les cinq verrous définis. Sous le paramètre par défaut premier-gagnant, la valeur d'administrateur qui bloque celle du parent est celle dans la source d'administrateur de plus haute priorité, sauf pour `allowedMcpServers` tandis que le [verrou serveur MCP](#lock-behavior-across-sources) est activé. Sous l'opt-in de fusion `managedSourcesBehavior`, [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) dit quelle valeur de source s'applique à la place.455Six paramètres fournis par le parent passent le filtre même avec les cinq verrous définis. Sous le paramètre par défaut premier-gagnant, la valeur d'administrateur qui bloque celle du parent est celle dans la source d'administrateur de plus haute priorité, sauf pour `allowedMcpServers` tandis que le [verrou serveur MCP](#lock-behavior-across-sources) est activé. Sous l'opt-in de fusion `managedSourcesBehavior`, [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) dit quelle valeur de source s'applique à la place.

456 456 

457* **`forceLoginOrgUUID`** : Claude Code honore une valeur fournie par le parent quand la source d'administrateur de plus haute priorité ne définit pas un UUID d'organisation. La connexion à la passerelle ne vérifie pas cette clé, donc elle ne compte que pour les flottes qui utilisent également les connexions Anthropic de première partie. Un UUID d'organisation dans la source d'administrateur de plus haute priorité bloque la valeur du parent et est celui que Claude Code applique, donc définissez `forceLoginOrgUUID` là.457* **`forceLoginOrgUUID`** : Claude Code honore une valeur fournie par le parent quand la source d'administrateur de plus haute priorité ne définit pas un UUID d'organisation. La connexion à la passerelle ne vérifie pas cette clé, donc elle ne compte que pour les flottes qui utilisent également les connexions Anthropic de première partie. Un UUID d'organisation dans la source d'administrateur de plus haute priorité bloque la valeur du parent et est celui que Claude Code applique, donc définissez `forceLoginOrgUUID` là.

458* **`allowedMcpServers`** : Claude Code honore une liste d'autorisation fournie par le parent quand aucune liste d'administrateur n'est en vigueur. `allowManagedMcpServersOnly` ne la bloque pas, car le verrou applique quelle que soit la liste qui gagne comme valeur gérée, y compris une liste fournie par le parent quand aucune source d'administrateur n'en fournit une. Une liste dans la source d'administrateur de plus haute priorité bloque celle du parent et est la liste que Claude Code applique, donc définissez `allowedMcpServers` là, à côté du verrou. Avant v2.1.223, une valeur pour l'une ou l'autre clé dans toute source d'administrateur bloquait celle du parent.458* **`allowedMcpServers`** : Claude Code honore une liste d'autorisation fournie par le parent quand aucune liste d'administrateur n'est en vigueur. `allowManagedMcpServersOnly` ne la bloque pas, car le verrou applique quelle que soit la liste qui gagne comme valeur gérée, y compris une liste fournie par le parent quand aucune source d'administrateur n'en fournit une. Une liste dans la source d'administrateur de plus haute priorité bloque celle du parent et est la liste que Claude Code applique, donc définissez `allowedMcpServers` là, à côté du verrou. Avant v2.1.223, une valeur pour l'une ou l'autre clé dans toute source d'administrateur bloquait celle du parent.

459* **`availableModels`** : Claude Code honore une liste de modèles fournie par le parent quand la source gérée gagnante n'en définit pas. Si votre flotte restreint les modèles, définissez `availableModels` dans la source gagnante.459* **`availableModels`** : Claude Code honore une liste de modèles fournie par le parent quand la source gérée gagnante n'en définit pas. Si votre flotte restreint les modèles, définissez `availableModels` dans la source gagnante.

460* **`strictKnownMarketplaces`** : Claude Code honore une liste d'autorisation de marché de plugins fournie par le parent quand la source gérée gagnante n'en définit pas. Si votre flotte restreint les marchés, définissez `strictKnownMarketplaces` dans la source gagnante. Nécessite Claude Code v2.1.282 ou ultérieur.

461* **`blockedMarketplaces`** : une liste de blocage de marché fournie par le parent passe et s'ajoute à toute liste de blocage qu'une source gérée définit, puisqu'une liste de blocage ne peut que restreindre davantage. Nécessite Claude Code v2.1.282 ou ultérieur.

460* **`strictPluginOnlyCustomization`** : cette clé passe le filtre indépendamment de tout verrou, et elle fait que Claude Code ignore la personnalisation propre du développeur, y compris les hooks protecteurs. Aucun verrou ne la bloque.462* **`strictPluginOnlyCustomization`** : cette clé passe le filtre indépendamment de tout verrou, et elle fait que Claude Code ignore la personnalisation propre du développeur, y compris les hooks protecteurs. Aucun verrou ne la bloque.

461 463 

462<h3 id="connect-claude-desktop">464<h3 id="connect-claude-desktop">

Details

37* [`managed`](#managed) : politiques de paramètres gérés par groupe IdP37* [`managed`](#managed) : politiques de paramètres gérés par groupe IdP

38* [`telemetry`](#telemetry) : transfert OTLP vers votre pile d'observabilité38* [`telemetry`](#telemetry) : transfert OTLP vers votre pile d'observabilité

39* [`access_control`, `limits`, `timeouts`, `rate_limits`](#http-tuning) : autorisation/refus IP, plafonds de taille de requête, time-to-first-byte upstream et limites de connexion par IP39* [`access_control`, `limits`, `timeouts`, `rate_limits`](#http-tuning) : autorisation/refus IP, plafonds de taille de requête, time-to-first-byte upstream et limites de connexion par IP

40* [`load_test_mode`](#load_test_mode) : tester en charge la passerelle sans appeler un fournisseur de modèle

40 41 

41<h2 id="secret-expansion">42<h2 id="secret-expansion">

42 Expansion des secrets43 Expansion des secrets


1027 1028 

1028Derrière un tel front-end, définissez [`listen.trusted_proxies`](#listen) en premier afin que la passerelle voie les vraies adresses client, et gardez la passerelle et tout ce qui se trouve devant elle inaccessible à partir d'Internet public indépendamment.1029Derrière un tel front-end, définissez [`listen.trusted_proxies`](#listen) en premier afin que la passerelle voie les vraies adresses client, et gardez la passerelle et tout ce qui se trouve devant elle inaccessible à partir d'Internet public indépendamment.

1029 1030 

1031<h3 id="load_test_mode">

1032 `load_test_mode`

1033</h3>

1034 

1035Le bloc `load_test_mode` vous permet de tester la charge d'une passerelle sans appeler un fournisseur de modèles. Tandis qu'il est activé, la passerelle construit et signe chaque demande de fournisseur comme d'habitude, la rejette au lieu de l'envoyer, et diffuse une réponse en conserve via son chemin de réponse normal. La réponse est un texte de remplissage qui commence par une phrase disant qu'elle est en conserve.

1036 

1037Nécessite v2.1.283 ou ultérieur. Les versions antérieures refusent de démarrer lorsque la clé est définie, afin de mettre à niveau chaque réplica avant d'ajouter le bloc et de le supprimer avant de revenir en arrière.

1038 

1039L'exemple ci-dessous active le mode avec les valeurs par défaut, une réponse de 750 jetons de sortie diffusée sur environ 10 secondes :

1040 

1041```yaml theme={null}

1042load_test_mode:

1043 enabled: true

1044 reply_tokens: 750 # roughly how many tokens of text each canned reply carries

1045 reply_seconds: 9.5 # how long a streamed reply takes

1046```

1047 

1048| Champ | Requis | Description |

1049| --------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1050| `enabled` | Oui | `true` active le mode. `false` conserve vos nombres dans le fichier avec le mode désactivé. La passerelle refuse de démarrer si le bloc est présent sans lui. |

1051| `reply_tokens` | Non | Par défaut `750`. Environ combien de jetons de texte chaque réponse en conserve porte, un nombre entier de 1 à 100 000. |

1052| `reply_seconds` | Non | Par défaut `9.5`. Combien de temps une réponse diffusée prend, de 0 à 600. `0` envoie la réponse entière à la fois. Une réponse à une demande non diffusée revient toujours à la fois. |

1053 

1054Un test de charge dans ce mode couvre la passerelle, votre Postgres et tout ce qui se trouve devant la passerelle. Il ne couvre pas les limites, la vitesse ou le chemin réseau du fournisseur.

1055 

1056Tandis que le mode est activé, une demande peut porter un en-tête `x-load-test-user` contenant un nombre entier de jusqu'à sept chiffres, et la passerelle compte chaque nombre comme un développeur distinct avec l'e-mail et les groupes du développeur dont le jeton est venu avec la demande. Donnez au déploiement de test de charge sa propre base de données vide, car la passerelle refuse de démarrer avec le mode activé par rapport à une base de données dans laquelle un développeur a déjà dépensé quelque chose.

1057 

1058<Warning>

1059 Ne jamais activer ceci pour une passerelle que les développeurs utilisent. Chaque demande obtient la réponse en conserve et aucun modèle n'est appelé. La passerelle enregistre un avertissement `load_test_mode is on` au démarrage et marque chaque événement d'audit [`inference`](/docs/fr/claude-apps-gateway-deploy#logs) avec `load_test: true` tandis que le mode est activé.

1060</Warning>

1061 

1030<h2 id="complete-example">1062<h2 id="complete-example">

1031 Exemple complet1063 Exemple complet

1032</h2>1064</h2>


1040# La verbosité du journal opérationnel est contrôlée par la variable1072# La verbosité du journal opérationnel est contrôlée par la variable

1041# d'environnement CLAUDE_GATEWAY_LOG_LEVEL1073# d'environnement CLAUDE_GATEWAY_LOG_LEVEL

1042# (debug | info | warn | error ; par défaut info). debug1074# (debug | info | warn | error ; par défaut info). debug

1043# enregistre également les noms de réclamations dans chaque id_token, pour le diagnostic de groups_claim.1075# enregistre également les noms de réclamations dans chaque id_token, pour le diagnostic groups_claim.

1044# Cela n'affecte pas les événements d'audit, qui sont toujours émis.1076# Cela n'affecte pas les événements d'audit, qui sont toujours émis.

1045 1077 

1046listen:1078listen:


1099# enforcement:1131# enforcement:

1100# fail_closed_on_error: false1132# fail_closed_on_error: false

1101 1133 

1134# Testez en charge ce déploiement sans appeler un fournisseur de modèle. Jamais sur une

1135# passerelle que les développeurs utilisent : chaque demande reçoit une réponse en conserve.

1136# load_test_mode:

1137# enabled: true

1138# # reply_tokens: 750

1139# # reply_seconds: 9.5

1140 

1102# Mesurez aux tarifs contractuels au lieu du prix catalogue USD. Nécessite admin: ou une1141# Mesurez aux tarifs contractuels au lieu du prix catalogue USD. Nécessite admin: ou une

1103# politique managed:. Avec managed:, les mêmes tarifs vont également aux clients connectés.1142# politique managed:. Avec managed:, les mêmes tarifs vont également aux clients connectés.

1104# Les tarifs ci-dessous sont des espaces réservés, pas des prix de contrat réels.1143# Les tarifs ci-dessous sont des espaces réservés, pas des prix de contrat réels.

Details

219* **[Application des limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits#postgres-availability)** : échoue ouvert par défaut pendant la panne, donc l'inférence continue de circuler ; basculez-la pour échouer fermé si vous préférez bloquer plutôt que de fonctionner sans compteur219* **[Application des limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits#postgres-availability)** : échoue ouvert par défaut pendant la panne, donc l'inférence continue de circuler ; basculez-la pour échouer fermé si vous préférez bloquer plutôt que de fonctionner sans compteur

220* **Disponibilité** : `/readyz` signale non-prêt pendant la panne, donc les orchestrateurs qui contrôlent le trafic sur la disponibilité retirent chaque réplique de la rotation à la fois. Dans cette topologie tout le trafic, y compris l'inférence que la passerelle pourrait toujours servir, échoue à l'équilibreur de charge jusqu'à la récupération de Postgres. La sonde de vivacité sur `/healthz` continue de passer, donc les répliques ne sont pas redémarrées. Pointez la sonde de disponibilité sur `/healthz` à la place si vous préférez que les développeurs connectés continuent de travailler pendant une panne du magasin ; le coût est que les nouvelles connexions échouent contre une réplique qui signale toujours prête.220* **Disponibilité** : `/readyz` signale non-prêt pendant la panne, donc les orchestrateurs qui contrôlent le trafic sur la disponibilité retirent chaque réplique de la rotation à la fois. Dans cette topologie tout le trafic, y compris l'inférence que la passerelle pourrait toujours servir, échoue à l'équilibreur de charge jusqu'à la récupération de Postgres. La sonde de vivacité sur `/healthz` continue de passer, donc les répliques ne sont pas redémarrées. Pointez la sonde de disponibilité sur `/healthz` à la place si vous préférez que les développeurs connectés continuent de travailler pendant une panne du magasin ; le coût est que les nouvelles connexions échouent contre une réplique qui signale toujours prête.

221 221 

222Si votre IdP tombe en panne, les sessions existantes fonctionnent jusqu'à `ttl_hours`, et les nouvelles connexions et actualisations échouent. Définissez un `ttl_hours` plus long si votre IdP a des fenêtres de maintenance fréquentes.222Si votre IdP tombe en panne, les sessions existantes fonctionnent jusqu'à `ttl_hours`, les nouvelles connexions échouent, et une actualisation de session obtient une réponse de réessai et se termine une fois que l'IdP est de retour. Définissez un `ttl_hours` plus long si votre IdP a des fenêtres de maintenance fréquentes.

223 223 

224<h3 id="jwt-secret-rotation">224<h3 id="jwt-secret-rotation">

225 Rotation du secret JWT225 Rotation du secret JWT

Details

218Teleport vérifie ces exigences avant de reprendre une session. Si une exigence n'est pas satisfaite, vous verrez une erreur ou serez invité à résoudre le problème.218Teleport vérifie ces exigences avant de reprendre une session. Si une exigence n'est pas satisfaite, vous verrez une erreur ou serez invité à résoudre le problème.

219 219 

220| Exigence | Détails |220| Exigence | Détails |

221| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |221| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

222| État git propre | Votre répertoire de travail ne doit avoir aucune modification non validée. Teleport vous invite à ranger les modifications si nécessaire. |222| État git propre | Votre répertoire de travail ne doit avoir aucune modification non validée. Teleport vous invite à ranger les modifications si nécessaire. |

223| Référentiel correct | Vous devez exécuter `--teleport` à partir d'un checkout du même référentiel, pas d'une fork. Si vous l'exécutez à partir d'un checkout d'un référentiel différent, Claude Code affiche une erreur qui nomme à la fois le référentiel de la session et votre checkout. Si Claude Code ne peut pas analyser votre remote en un nom d'hôte, par exemple un alias d'hôte SSH comme `git@work:owner/repo.git`, il vous demande de confirmer et accepte le checkout quand le propriétaire du remote et le nom du référentiel correspondent au référentiel de la session. |223| Référentiel correct | Vous devez exécuter `--teleport` à partir d'un checkout du même référentiel, pas d'une fork. Si vous l'exécutez à partir d'un checkout d'un référentiel différent, Claude Code affiche une erreur qui nomme à la fois le référentiel de la session et le référentiel de votre checkout. Avant la v2.1.219, l'erreur ne nommait pas le référentiel de votre checkout. Si Claude Code ne peut pas analyser votre remote en un nom d'hôte, par exemple un alias d'hôte SSH comme `git@work:owner/repo.git`, il vous demande de confirmer et accepte le checkout quand le propriétaire du remote et le nom du référentiel correspondent au référentiel de la session. |

224| Branche disponible | La branche de la session cloud doit avoir été poussée vers le remote. Teleport la récupère et la vérifie automatiquement. |224| Branche disponible | La branche de la session cloud doit avoir été poussée vers le remote. Teleport la récupère et la vérifie automatiquement. |

225| Même compte | Vous devez être authentifié au même compte claude.ai utilisé dans la session cloud. |225| Même compte | Vous devez être authentifié au même compte claude.ai utilisé dans la session cloud. |

226 226 

Details

1451L'explorateur couvre les fichiers que vous créez et modifiez. Quelques fichiers connexes se trouvent ailleurs :1451L'explorateur couvre les fichiers que vous créez et modifiez. Quelques fichiers connexes se trouvent ailleurs :

1452 1452 

1453| Fichier | Emplacement | Objectif |1453| Fichier | Emplacement | Objectif |

1454| ----------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1454| ----------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1455| `managed-settings.json` | Au niveau du système, varie selon le système d'exploitation | Paramètres appliqués par l'entreprise que vous ne pouvez pas remplacer, à l'exception de [quelques cas particuliers](/docs/fr/settings#security-keys-where-the-stricter-value-applies). Consultez [où enregistrer le fichier](/docs/fr/managed-settings#deploy-a-managed-settings-file) et [quelle source gérée Claude Code utilise](/docs/fr/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | Au niveau du système, varie selon le système d'exploitation | Paramètres appliqués par l'entreprise que vous ne pouvez pas remplacer, à l'exception de [quelques cas particuliers](/docs/fr/settings#security-keys-where-the-stricter-value-applies). Consultez [où enregistrer le fichier](/docs/fr/managed-settings#deploy-a-managed-settings-file) et [quelle source gérée Claude Code utilise](/docs/fr/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Racine du projet | Vos préférences privées pour ce projet, chargées aux côtés de CLAUDE.md. Créez-le manuellement et ajoutez-le à `.gitignore`. |1456| `CLAUDE.local.md` | Racine du projet | Vos préférences privées pour ce projet, chargées aux côtés de CLAUDE.md. Créez-le manuellement et ajoutez-le à `.gitignore`. |

1457| `AGENTS.md` | Racine du projet, `.claude/`, ou n'importe quel répertoire | Instructions de projet que vous écrivez pour les agents de codage IA. Claude Code peut [le charger](/docs/fr/memory#agents-md) de lui-même ou aux côtés de `CLAUDE.md`. |1457| `AGENTS.md` | Racine du projet, `.claude/`, ou n'importe quel répertoire | Instructions de projet que vous écrivez pour les agents de codage IA. Claude Code peut [le charger](/docs/fr/memory#agents-md) de lui-même ou aux côtés de `CLAUDE.md`. |

1458| Plugins installés | `~/.claude/plugins` | Marchés clonés, versions de plugins installées, l'enregistrement d'installation `installed_plugins.json` et données par plugin, gérées par les commandes `claude plugin`. Les plugins [synchronisés à partir de votre compte claude.ai](/docs/fr/plugins-reference#synced-plugins) se téléchargent dans `~/.claude/plugins/synced/`. Pour un plugin installé à partir d'une source [`command`](/docs/fr/plugin-marketplaces#command-sources) de marketplace en mode lien, Claude Code stocke les liens ici au lieu d'une copie, et les fichiers du plugin restent dans le répertoire que la commande affiche. Une source `command` nécessite Claude Code v2.1.229 ou version ultérieure. Un plugin listé par chemin relatif dans une marketplace de répertoire local [se charge également sur place](/docs/fr/plugins-reference#plugin-caching-and-file-resolution) à partir de son répertoire source plutôt qu'à partir d'une copie en cache. Consultez [mise en cache des plugins](/docs/fr/plugins-reference#plugin-caching-and-file-resolution) pour savoir comment les versions orphelines sont nettoyées. |1458| Plugins installés | `~/.claude/plugins` | Marchés clonés, versions de plugins installées, l'enregistrement d'installation `installed_plugins.json` et données par plugin, gérées par les commandes `claude plugin`. Les plugins [synchronisés à partir de votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins) se téléchargent dans `~/.claude/plugins/synced/`. Pour un plugin installé à partir d'une source [`command`](/docs/fr/plugins/marketplace-reference#command-plugin-source) de marketplace en mode lien, Claude Code stocke les liens ici au lieu d'une copie, et les fichiers du plugin restent dans le répertoire que la commande affiche. Une source `command` nécessite Claude Code v2.1.229 ou version ultérieure. Un plugin listé par chemin relatif dans une marketplace de répertoire local [se charge également sur place](/docs/fr/plugins/loading#find-plugins-on-disk) à partir de son répertoire source plutôt qu'à partir d'une copie en cache. Consultez [mise en cache des plugins](/docs/fr/plugins/loading#find-plugins-on-disk) pour savoir comment les versions orphelines sont nettoyées. |

1459 1459 

1460`~/.claude` contient également les données que Claude Code écrit au fur et à mesure que vous travaillez : transcriptions, historique des invites, instantanés de fichiers, caches et journaux. Consultez [données d'application](#application-data) ci-dessous.1460`~/.claude` contient également les données que Claude Code écrit au fur et à mesure que vous travaillez : transcriptions, historique des invites, instantanés de fichiers, caches et journaux. Consultez [données d'application](#application-data) ci-dessous.

1461 1461 


1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Frontmatter de style de sortie](/docs/fr/output-styles#frontmatter) |1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Frontmatter de style de sortie](/docs/fr/output-styles#frontmatter) |

1530| `rules/*.md` | `paths` | [Frontmatter de règle](/docs/fr/memory#rules-frontmatter-reference) |1530| `rules/*.md` | `paths` | [Frontmatter de règle](/docs/fr/memory#rules-frontmatter-reference) |

1531 1531 

1532Les agents fournis dans un [plugin](/docs/fr/plugins-reference#plugin-agent-frontmatter) respectent un sous-ensemble des champs de sous-agent.1532Les agents fournis dans un [plugin](/docs/fr/plugins/components#agents) respectent un sous-ensemble des champs de sous-agent.

1533 1533 

1534<h2 id="troubleshoot-configuration">1534<h2 id="troubleshoot-configuration">

1535 Dépannez votre configuration1535 Dépannez votre configuration


1568| `feedback-bundles/` | Archives de transcription rédactées écrites par `/feedback` sur des fournisseurs tiers ou lorsqu'aucune identifiant Anthropic n'est configuré, pour envoi à votre équipe de compte Anthropic |1568| `feedback-bundles/` | Archives de transcription rédactées écrites par `/feedback` sur des fournisseurs tiers ou lorsqu'aucune identifiant Anthropic n'est configuré, pour envoi à votre équipe de compte Anthropic |

1569| `feedback/drafts/` | [Feedback rédigé par Claude](/docs/fr/tools-reference#sendfeedback-tool-behavior) en attente en file d'attente de votre examen dans `/feedback`. Balayé après `cleanupPeriodDays` ou 30 jours, selon la plus courte. Lorsque la file d'attente atteint sa limite de 10 brouillons, Claude Code supprime le brouillon le plus ancien pour faire de la place. |1569| `feedback/drafts/` | [Feedback rédigé par Claude](/docs/fr/tools-reference#sendfeedback-tool-behavior) en attente en file d'attente de votre examen dans `/feedback`. Balayé après `cleanupPeriodDays` ou 30 jours, selon la plus courte. Lorsque la file d'attente atteint sa limite de 10 brouillons, Claude Code supprime le brouillon le plus ancien pour faire de la place. |

1570| `usage-data/` | `report.html` et copies de rapport horodatées écrites par [`/insights`](/docs/fr/costs#analyze-your-usage-patterns), plus données d'analyse mises en cache par session utilisées pour les construire |1570| `usage-data/` | `report.html` et copies de rapport horodatées écrites par [`/insights`](/docs/fr/costs#analyze-your-usage-patterns), plus données d'analyse mises en cache par session utilisées pour les construire |

1571| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/fr/skills#how-synced-skills-behave) et [plugins](/docs/fr/plugins-reference#synced-plugins) que la synchronisation claude.ai a supprimés, par exemple après que vous en ayez désactivé un sur claude.ai ou arrêté la synchronisation. Les fichiers restent ici pour que vous puissiez les récupérer jusqu'à ce que le balayage les supprime |1571| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/fr/skills#how-synced-skills-behave) et [plugins](/docs/fr/plugins/loading#synced-plugins) que la synchronisation claude.ai a supprimés, par exemple après que vous en ayez désactivé un sur claude.ai ou arrêté la synchronisation. Les fichiers restent ici pour que vous puissiez les récupérer jusqu'à ce que le balayage les supprime |

1572| `todos/`, `statsig/`, `logs/` | Répertoires hérités des versions antérieures. Ne sont plus écrits. Le balayage supprime leur contenu puis le répertoire vide. |1572| `todos/`, `statsig/`, `logs/` | Répertoires hérités des versions antérieures. Ne sont plus écrits. Le balayage supprime leur contenu puis le répertoire vide. |

1573 1573 

1574Les fichiers de session dans `sessions/`, la mémoire automatique, et les transcriptions Claude Desktop et Cowork suivent chacun leur propre règle de rétention :1574Les fichiers de session dans `sessions/`, la mémoire automatique, et les transcriptions Claude Desktop et Cowork suivent chacun leur propre règle de rétention :


1678Vous pouvez également supprimer manuellement l'un des chemins de données d'application ci-dessus, à l'exception des [fichiers d'état à conserver](#state-files-to-keep). Les nouvelles sessions ne sont pas affectées. Le tableau ci-dessous montre ce que vous perdez pour les sessions passées.1678Vous pouvez également supprimer manuellement l'un des chemins de données d'application ci-dessus, à l'exception des [fichiers d'état à conserver](#state-files-to-keep). Les nouvelles sessions ne sont pas affectées. Le tableau ci-dessous montre ce que vous perdez pour les sessions passées.

1679 1679 

1680| Supprimer | Vous perdez |1680| Supprimer | Vous perdez |

1681| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1681| -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1682| `~/.claude/projects/` | Reprendre, continuer et rembobiner pour les sessions passées, et mémoire automatique pour chaque projet |1682| `~/.claude/projects/` | Reprendre, continuer et rembobiner pour les sessions passées, et mémoire automatique pour chaque projet |

1683| `~/.claude/history.jsonl` | Rappel d'invite de flèche vers le haut, recherche d'historique `Ctrl+R` et complétion de commande shell `!` |1683| `~/.claude/history.jsonl` | Rappel d'invite de flèche vers le haut, recherche d'historique `Ctrl+R` et complétion de commande shell `!` |

1684| `~/.claude/paste-cache/` | Texte collé dans les invites rappelées ; voir [coller du contenu volumineux](/docs/fr/terminal-config#paste-large-content) |1684| `~/.claude/paste-cache/` | Texte collé dans les invites rappelées ; voir [coller du contenu volumineux](/docs/fr/terminal-config#paste-large-content) |


1692| `~/.claude/cache/changelog.md` | Rien. Actualisé en arrière-plan. |1692| `~/.claude/cache/changelog.md` | Rien. Actualisé en arrière-plan. |

1693| `~/.claude/policy-limits.json` | Rien. Actualisé automatiquement. |1693| `~/.claude/policy-limits.json` | Rien. Actualisé automatiquement. |

1694| `~/.claude/tasks/` | Listes de tâches qu'une session reprise récupérerait |1694| `~/.claude/tasks/` | Listes de tâches qu'une session reprise récupérerait |

1695| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | La chance de récupérer les [skills synchronisés](/docs/fr/skills#how-synced-skills-behave) et les [plugins synchronisés](/docs/fr/plugins-reference#synced-plugins) que Claude Code a supprimés |1695| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | La chance de récupérer les [skills synchronisés](/docs/fr/skills#how-synced-skills-behave) et les [plugins synchronisés](/docs/fr/plugins/loading#synced-plugins) que Claude Code a supprimés |

1696| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Rien d'orienté utilisateur |1696| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Rien d'orienté utilisateur |

1697| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Rien. Répertoires hérités non écrits par les versions actuelles. |1697| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Rien. Répertoires hérités non écrits par les versions actuelles. |

1698 1698 

Details

242 242 

243Claude Code exécute également cette commande au démarrage lorsqu'il ne peut pas valider vos identifiants AWS existants, et affiche la sortie de la commande dans un panneau `Authentication` jusqu'à ce que la connexion soit terminée.243Claude Code exécute également cette commande au démarrage lorsqu'il ne peut pas valider vos identifiants AWS existants, et affiche la sortie de la commande dans un panneau `Authentication` jusqu'à ce que la connexion soit terminée.

244 244 

245Avec `awsAuthRefresh` configuré, exécutez `/login`, sélectionnez **plateforme tierce**, puis sélectionnez **Claude Platform on AWS · actualiser les identifiants** sous **Utilisation de plateformes tierces**. Claude Code exécute la commande configurée et relit vos identifiants AWS sans redémarrage. Cette option nécessite Claude Code v2.1.186 ou version ultérieure.245Avec `awsAuthRefresh` configuré, exécutez `/login`, sélectionnez **plateforme tierce**, puis sélectionnez **Claude Platform on AWS · actualiser les identifiants** sous **Utilisation de plateformes tierces**. Claude Code exécute la commande configurée et relit vos identifiants AWS sans redémarrage.

246 246 

247**Option B : Clé API d'espace de travail**247**Option B : Clé API d'espace de travail**

248 248 

claude-projects.md +39 −37

Details

10 Projects est en bêta publique sur les plans Pro et Max et se déploie progressivement, en commençant par les comptes qui ont utilisé les [sessions cloud](/docs/fr/claude-code-on-the-web) et qui n'ont pas de projets existants dans le chat claude.ai ou Cowork. Il n'est pas encore disponible sur les plans Team ou Enterprise. Si **Projects** n'apparaît pas dans la barre latérale sur [claude.ai/code](https://claude.ai/code) ou dans l'onglet Code de l'[application de bureau](/docs/fr/desktop), le déploiement n'a pas encore atteint votre compte, et vous pouvez [rejoindre la liste d'attente](https://claude.com/form/projects). [Exécuter des agents en parallèle](/docs/fr/agents) énumère ce que vous pouvez utiliser en attendant.10 Projects est en bêta publique sur les plans Pro et Max et se déploie progressivement, en commençant par les comptes qui ont utilisé les [sessions cloud](/docs/fr/claude-code-on-the-web) et qui n'ont pas de projets existants dans le chat claude.ai ou Cowork. Il n'est pas encore disponible sur les plans Team ou Enterprise. Si **Projects** n'apparaît pas dans la barre latérale sur [claude.ai/code](https://claude.ai/code) ou dans l'onglet Code de l'[application de bureau](/docs/fr/desktop), le déploiement n'a pas encore atteint votre compte, et vous pouvez [rejoindre la liste d'attente](https://claude.com/form/projects). [Exécuter des agents en parallèle](/docs/fr/agents) énumère ce que vous pouvez utiliser en attendant.

11</Note>11</Note>

12 12 

13Un projet est une conversation en cours unique où Claude coordonne un flux de travaux connexes pour vous. Vous lui dites ce qui doit être fait et il démarre un thread pour chaque tâche. Chaque thread est une [session cloud](/docs/fr/claude-code-on-the-web) : Claude Code s'exécutant dans le cloud plutôt que sur votre machine. Les threads s'exécutent en parallèle et continuent après que vous ayez fermé l'ordinateur portable, et vous pouvez les vérifier et les diriger depuis votre téléphone.13Un projet est une conversation en cours unique où Claude coordonne un flux de travaux connexes pour vous. Vous lui dites ce qui doit être fait et il démarre un thread pour chaque tâche.

14 

15Chaque thread est généralement une [session cloud](/docs/fr/claude-code-on-the-web) : Claude Code s'exécutant dans le cloud plutôt que sur votre machine. Quand une tâche a besoin de quelque chose que seul votre ordinateur possède, vous pouvez demander à Claude d'exécuter ce thread sur votre ordinateur à la place via [Remote Control](/docs/fr/remote-control). Les threads s'exécutent en parallèle et vous pouvez les vérifier et les diriger depuis votre téléphone. Les threads cloud continuent après que vous ayez fermé l'ordinateur portable.

14 16 

15Sans projet, l'exécution de plusieurs sessions signifie faire la coordination vous-même : vous décidez sur quoi chacun travaille, répétez le même contexte au début de chacun, et vérifiez lequel a terminé ou a besoin d'une réponse. Avec un projet, vous pouvez plutôt :17Sans projet, l'exécution de plusieurs sessions signifie faire la coordination vous-même : vous décidez sur quoi chacun travaille, répétez le même contexte au début de chacun, et vérifiez lequel a terminé ou a besoin d'une réponse. Avec un projet, vous pouvez plutôt :

16 18 

17* **Envoyer le travail à un seul endroit** : collez un rapport de bug, une trace de pile ou une liste de tâches dans la conversation chaque fois qu'une apparaît. Claude démarre un thread pour chaque élément de travail ou le transmet au thread déjà en train de travailler dans ce domaine, et répond aux questions rapides sur place.19* **Envoyer le travail à un seul endroit** : collez un rapport de bug, une trace de pile ou une liste de tâches dans la conversation chaque fois qu'une apparaît. Claude démarre un thread pour chaque élément de travail ou le transmet au thread déjà en train de travailler dans ce domaine, et répond aux questions rapides sur place.

18* **Définir le contexte une seule fois** : chaque nouveau thread commence avec les référentiels, les instructions et la mémoire du projet, donc une règle que vous énoncez une seule fois, comme la branche à cibler, atteint tous les threads.20* **Définir le contexte une seule fois** : chaque nouveau thread commence avec les instructions du projet, donc une règle que vous énoncez une seule fois, comme la branche à cibler, atteint tous les threads.

19* **Partez et revenez au travail terminé** : quand vous revenez une heure plus tard ou le lendemain matin, le volet **Overview** montre quels threads ont terminé, quelles pull requests sont prêtes pour examen, et quel thread attend votre réponse.21* **Partez et revenez au travail terminé** : quand vous revenez une heure plus tard ou le lendemain matin, le volet **Overview** montre quels threads ont terminé, quelles pull requests sont prêtes pour examen, et quel thread attend votre réponse.

20 22 

21Si vous connaissez déjà le travail que vous voulez qu'un projet exécute, allez directement à [Créer un projet](#create-a-project).23Si vous connaissez déjà le travail que vous voulez qu'un projet exécute, allez directement à [Créer un projet](#create-a-project).


37 Quand quelque chose d'autre convient mieux39 Quand quelque chose d'autre convient mieux

38</h3>40</h3>

39 41 

40Les threads fonctionnent sur les référentiels GitHub et sur les fichiers, dossiers et dossiers Google Drive que vous téléchargez vers le projet, pas sur les fichiers ou outils qui n'existent que sur votre machine. Quelque chose d'autre convient mieux dans ces cas :42Les threads cloud fonctionnent sur les référentiels GitHub et sur les fichiers, dossiers et dossiers Google Drive que vous téléchargez vers le projet, pas sur les fichiers ou outils qui n'existent que sur votre machine. Si une tâche nécessite votre machine, demandez à Claude d'exécuter son thread là-bas via [Remote Control](/docs/fr/remote-control). [Limitations](#limitations) énumère ce dont cela a besoin. Quelque chose d'autre convient mieux dans ces cas :

41 43 

42* **Une tâche qui tient dans une session** : « Corriger le test de connexion instable. » Démarrez une [session cloud](/docs/fr/claude-code-on-the-web) vous-même.44* **Une tâche qui tient dans une session** : « Corriger le test de connexion instable. » Démarrez une [session cloud](/docs/fr/claude-code-on-the-web) vous-même.

43* **Un travail qui nécessite des outils ou des services que seule votre machine peut atteindre** : une base de données locale, un émulateur d'appareil, une API derrière votre VPN. Utilisez une session locale, ou [agent view](/docs/fr/agent-view) pour en exécuter plusieurs à la fois. Si le travail ne nécessite que des fichiers locaux, téléchargez-les vers le projet à la place.45* **Un travail où chaque tâche nécessite votre machine** : une base de données locale, un émulateur d'appareil, ou une API derrière votre VPN. Utilisez une session locale, ou [agent view](/docs/fr/agent-view) pour en exécuter plusieurs à la fois. Si le travail ne nécessite que des fichiers locaux, téléchargez-les vers le projet à la place.

44* **Une tâche qui se répète selon un calendrier sans conversation autour** : « Publier un rapport de dépendance chaque lundi. » Créez une [routine](/docs/fr/routines) seule.46* **Une tâche qui se répète selon un calendrier sans conversation autour** : « Publier un rapport de dépendance chaque lundi. » Créez une [routine](/docs/fr/routines) seule.

45* **Plusieurs personnes donnant du travail à Claude et le dirigeant ensemble dans un canal Slack** : voir [Claude Tag](https://claude.com/docs/claude-tag/overview).47* **Plusieurs personnes donnant du travail à Claude et le dirigeant ensemble dans un canal Slack** : voir [Claude Tag](https://claude.com/docs/claude-tag/overview).

46 48 


53Un projet est une conversation de coordination unique avec Claude plus les threads qu'il démarre pour faire le travail. Voici ses parties :55Un projet est une conversation de coordination unique avec Claude plus les threads qu'il démarre pour faire le travail. Voici ses parties :

54 56 

55* **La conversation du projet** : une session longue durée unique où Claude agit en tant que coordinateur. Il prend ce que vous envoyez, décide ce qui devient un thread, et garde une trace de chaque thread qu'il a démarré. Il voit ce que les threads rapportent, pas chaque étape qu'ils prennent.57* **La conversation du projet** : une session longue durée unique où Claude agit en tant que coordinateur. Il prend ce que vous envoyez, décide ce qui devient un thread, et garde une trace de chaque thread qu'il a démarré. Il voit ce que les threads rapportent, pas chaque étape qu'ils prennent.

56* **Threads** : les travailleurs. Chacun est une [session cloud](/docs/fr/claude-code-on-the-web) distincte avec sa propre fenêtre de contexte qui fait un morceau de travail sur sa propre branche, ouvre une pull request quand le travail l'exige, et rapporte à la conversation quand il termine.58* **Threads** : les travailleurs. Chacun est une session distincte avec sa propre fenêtre de contexte qui fait un morceau de travail et rapporte à la conversation quand il termine. Un thread cloud travaille sur sa propre branche et ouvre une pull request quand le travail l'exige.

57* **Ce que chaque thread commence avec** :59* **Ce que chaque thread cloud commence avec** :

58 * Les référentiels et fichiers du projet, plus ses [instructions et mémoire](#give-a-project-standing-context)60 * Les référentiels et fichiers du projet, plus ses [instructions et mémoire](#give-a-project-standing-context)

59 * Le `CLAUDE.md` et skills dans [chacun des référentiels du projet](#what-threads-pick-up-from-your-repositories), et dans un projet avec un référentiel, les règles de permission et les hooks de ce référentiel aussi61 * Le `CLAUDE.md` et skills dans [chacun des référentiels du projet](#what-threads-pick-up-from-your-repositories), et dans un projet avec un référentiel, les règles de permission et les hooks de ce référentiel aussi

60 * Les [connecteurs](#get-skills-plugins-connectors-and-tools-into-threads) sur votre compte claude.ai62 * Les [connecteurs](#get-skills-plugins-connectors-and-tools-into-threads) sur votre compte claude.ai

61 * Un [environnement cloud](#choose-an-environment-for-threads) qui définit son accès réseau, les variables d'environnement, les identifiants API et les outils installés63 * Un [environnement cloud](#choose-an-environment-for-threads) qui définit son accès réseau, les variables d'environnement, les identifiants API et les outils installés

62* **Le volet Overview** : où vous [voyez tous les threads à la fois](#see-what-needs-you-in-overview) et lesquels vous attendent. Ses autres onglets sont **Library** pour les fichiers que vous avez ajoutés et les fichiers que les threads ont produits, **Pull requests** pour ceux que les threads ont ouverts, et **Routines** pour le travail programmé dans le projet.64* **Le volet Overview** : où vous [voyez tous les threads à la fois](#see-what-needs-you-in-overview) et lesquels vous attendent. Ses autres onglets sont **Library** pour les fichiers que vous avez ajoutés et les fichiers que les threads ont produits, **Pull requests** pour ceux que les threads ont ouverts, et **Routines** pour le travail programmé dans le projet.

63 65 

64Les threads ne reprennent rien de la configuration Claude Code sur votre propre machine. [Obtenir des skills, des plugins, des connecteurs et des outils dans les threads](#get-skills-plugins-connectors-and-tools-into-threads) couvre comment leur donner ce qui leur manquerait autrement.66Les threads cloud ne reprennent rien de la configuration Claude Code sur votre propre machine. [Obtenir des skills, des plugins, des connecteurs et des outils dans les threads](#get-skills-plugins-connectors-and-tools-into-threads) couvre comment leur donner ce qui leur manquerait autrement.

65 67 

66Voici comment ces parties se connectent, de vous à travers la conversation aux threads qui font le travail, avec **Overview** qui suit leur état :68Voici comment ces parties se connectent, de vous à travers la conversation aux threads qui font le travail, avec **Overview** qui suit leur état :

67 69 

68<Frame>70<Frame>

69 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=dbf446f69f0bbdb9961d21af207cb93b" className="dark:hidden" alt="Diagramme d'un projet. Vous écrivez dans la conversation du projet, où Claude répond ou démarre un thread. Chaque thread est une session cloud travaillant sur sa propre branche et pull request. Le volet Overview énumère les threads par état, comme prêt pour examen, en attente de vous et en cours." width="600" height="250" data-path="images/claude-projects-overview.svg" />71 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=dbf446f69f0bbdb9961d21af207cb93b" className="dark:hidden" alt="Diagramme d'un projet. Vous écrivez dans la conversation du projet, où Claude répond ou démarre un thread. Chaque thread cloud travaille sur sa propre branche et pull request. Le volet Overview énumère les threads par état, comme prêt pour examen, en attente de vous et en cours." width="600" height="250" data-path="images/claude-projects-overview.svg" />

70 72 

71 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview-dark.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=549a5ba9fea8433729babc37a1f6e9c8" className="hidden dark:block" alt="Diagramme d'un projet. Vous écrivez dans la conversation du projet, où Claude répond ou démarre un thread. Chaque thread est une session cloud travaillant sur sa propre branche et pull request. Le volet Overview énumère les threads par état, comme prêt pour examen, en attente de vous et en cours." width="600" height="250" data-path="images/claude-projects-overview-dark.svg" />73 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview-dark.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=549a5ba9fea8433729babc37a1f6e9c8" className="hidden dark:block" alt="Diagramme d'un projet. Vous écrivez dans la conversation du projet, où Claude répond ou démarre un thread. Chaque thread cloud travaille sur sa propre branche et pull request. Le volet Overview énumère les threads par état, comme prêt pour examen, en attente de vous et en cours." width="600" height="250" data-path="images/claude-projects-overview-dark.svg" />

72</Frame>74</Frame>

73 75 

74<h2 id="create-a-project">76<h2 id="create-a-project">


279 Donner un contexte permanent à un projet281 Donner un contexte permanent à un projet

280</h2>282</h2>

281 283 

282La mémoire du projet, les instructions du projet et les référentiels, fichiers et environnement du projet portent le contexte sur les threads. Vous définissez chacun une fois et il s'applique à chaque nouveau thread.284La mémoire du projet, les instructions du projet et les référentiels, fichiers et environnement du projet portent le contexte sur les threads. Vous définissez chacun une fois.

283 285 

284| Contexte | Ce qu'il porte | Comment vous le définissez |286| Contexte | Ce qu'il porte | Comment vous le définissez |

285| :-------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |287| :-------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

286| Mémoire du projet | Notes que Claude garde sur le projet, comme les exigences, les décisions et les pièges, stockées sous forme de fichiers. Chaque thread lit le fichier d'index `MEMORY.md` au démarrage et ouvre les autres fichiers quand il en a besoin | Demandez à Claude dans la conversation du projet ou n'importe quel thread de mémoriser une exigence, une décision ou un piège, ou d'en oublier un. Lisez, modifiez et supprimez les fichiers dans **Project settings > Memory** |288| Mémoire du projet | Notes que Claude garde sur le projet, comme les exigences, les décisions et les pièges, stockées sous forme de fichiers. Chaque thread cloud lit le fichier d'index `MEMORY.md` au démarrage et ouvre les autres fichiers quand il en a besoin | Demandez à Claude dans la conversation du projet ou n'importe quel thread cloud de mémoriser une exigence, une décision ou un piège, ou d'en oublier un. Lisez, modifiez et supprimez les fichiers dans **Project settings > Memory** |

287| Instructions du projet | Texte envoyé à chaque nouveau thread et à Claude dans la conversation du projet, jusqu'à 16 000 caractères. [Écrire les instructions du projet](#write-project-instructions) couvre ce qu'il faut y mettre | **Project settings > Memory > Project instructions**, ou demandez à Claude de changer les instructions |289| Instructions du projet | Texte envoyé à chaque nouveau thread et à Claude dans la conversation du projet, jusqu'à 16 000 caractères. [Écrire les instructions du projet](#write-project-instructions) couvre ce qu'il faut y mettre | **Project settings > Memory > Project instructions**, ou demandez à Claude de changer les instructions |

288| Référentiels, fichiers et environnement | Les référentiels que chaque thread clone, les dossiers et fichiers que chaque thread peut lire sous `/mnt/project-files`, et l'environnement cloud dans lequel les threads s'exécutent | Référentiels et environnement dans **Project settings > Environment**, ou demandez à Claude dans la conversation d'ajouter un référentiel au projet. Fichiers et dossiers depuis **Add** sur l'onglet **Library** dans **Overview** |290| Référentiels, fichiers et environnement | Les référentiels que chaque thread cloud clone, les dossiers et fichiers qu'il peut lire sous `/mnt/project-files`, et l'environnement cloud dans lequel il s'exécute | Référentiels et environnement dans **Project settings > Environment**, ou demandez à Claude dans la conversation d'ajouter un référentiel au projet. Fichiers et dossiers depuis **Add** sur l'onglet **Library** dans **Overview** |

289 291 

290**Project settings > Memory** énumère ces fichiers sous **Auto memory**, car Claude les écrit lui-même en travaillant dans le projet. Ils sont distincts de la [mémoire automatique](/docs/fr/memory) que Claude Code garde sur votre machine, même si les deux utilisent un index `MEMORY.md`. La mémoire du projet est également distincte des fichiers `CLAUDE.md` dans les référentiels du projet. Chaque thread lit toujours ces fichiers `CLAUDE.md` à partir de son clone au démarrage, donc mettez les instructions sur un référentiel dans son `CLAUDE.md` et les notes sur le projet dans la mémoire du projet.292**Project settings > Memory** énumère ces fichiers sous **Auto memory**, car Claude les écrit lui-même en travaillant dans le projet. Ils sont distincts de la [mémoire automatique](/docs/fr/memory) que Claude Code garde sur votre machine, même si les deux utilisent un index `MEMORY.md`. La mémoire du projet est également distincte des fichiers `CLAUDE.md` dans les référentiels du projet. Chaque thread cloud lit toujours ces fichiers `CLAUDE.md` à partir de son clone au démarrage, donc mettez les instructions sur un référentiel dans son `CLAUDE.md` et les notes sur le projet dans la mémoire du projet.

291 293 

292<h3 id="write-project-instructions">294<h3 id="write-project-instructions">

293 Écrire les instructions du projet295 Écrire les instructions du projet


312- Ne fusionnez pas, ne forcez pas de push et ne changez pas la configuration CI sans me le demander dans le thread.314- Ne fusionnez pas, ne forcez pas de push et ne changez pas la configuration CI sans me le demander dans le thread.

313```315```

314 316 

315Les règles sur un référentiel, comme ses commandes de construction, appartiennent au `CLAUDE.md` de ce référentiel, que chaque thread lit quand le référentiel fait partie du projet. Une fois que le travail est en cours, quand vous corrigez un thread, dites aussi à Claude de mémoriser la correction : elle va dans la [mémoire du projet](#give-a-project-standing-context) et les threads ultérieurs commencent avec elle.317Les règles sur un référentiel, comme ses commandes de construction, appartiennent au `CLAUDE.md` de ce référentiel, que chaque thread cloud lit quand le référentiel fait partie du projet. Une fois que le travail est en cours, quand vous corrigez un thread, dites aussi à Claude de mémoriser la correction : elle va dans la [mémoire du projet](#give-a-project-standing-context) et les threads ultérieurs commencent avec elle.

316 318 

317<h3 id="decide-which-repositories-to-add">319<h3 id="decide-which-repositories-to-add">

318 Décider quels référentiels ajouter320 Décider quels référentiels ajouter

319</h3>321</h3>

320 322 

321Les référentiels que vous ajoutez à un projet viennent avec tout ce qu'ils contiennent, leur code, `CLAUDE.md` et skills, dans chaque thread. Les référentiels que vous n'ajoutez pas sont toujours à portée : un thread peut en ajouter un à lui-même quand sa tâche en a besoin. La plupart des projets utilisent les deux :323Les référentiels que vous ajoutez à un projet viennent avec tout ce qu'ils contiennent, leur code, `CLAUDE.md` et skills, dans chaque thread cloud. Les référentiels que vous n'ajoutez pas sont toujours à portée : un thread cloud peut en ajouter un à lui-même quand sa tâche en a besoin. La plupart des projets utilisent les deux :

322 324 

323* **L'ajouter au projet**, dans la boîte de dialogue **New project**, dans **Project settings > Environment**, ou en demandant à Claude dans la conversation de l'ajouter au projet. Chaque thread à partir de là clone et commence avec son `CLAUDE.md` et ses skills chargés, que la tâche le touche ou non. Passer d'un référentiel à plusieurs change également ce que les threads prennent du `.claude/settings.json` de chaque référentiel ; voir [Ce que les threads reprennent de vos référentiels](#what-threads-pick-up-from-your-repositories).325* **L'ajouter au projet**, dans la boîte de dialogue **New project**, dans **Project settings > Environment**, ou en demandant à Claude dans la conversation de l'ajouter au projet. Chaque thread cloud à partir de là clone et commence avec son `CLAUDE.md` et ses skills chargés, que la tâche le touche ou non. Passer d'un référentiel à plusieurs change également ce que les threads prennent du `.claude/settings.json` de chaque référentiel ; voir [Ce que les threads reprennent de vos référentiels](#what-threads-pick-up-from-your-repositories).

324* **Le laisser de côté et laisser les threads l'ajouter quand nécessaire.** Un thread dont la tâche a besoin d'un référentiel que le projet n'a pas peut l'ajouter à lui-même, et une note dans le thread dit qu'il a été ajouté à ce thread seulement. Le clone se produit à mi-chemin de la tâche, donc le `CLAUDE.md` et les skills de ce référentiel n'étaient pas là quand le thread a commencé. Le thread suivant commence sans lui à nouveau. Un référentiel qu'un thread ajoute a besoin des mêmes [prérequis](#check-the-prerequisites) qu'un référentiel de projet : l'application Claude GitHub installée dessus et l'accès en push de votre compte GitHub.326* **Le laisser de côté et laisser les threads l'ajouter quand nécessaire.** Un thread cloud dont la tâche a besoin d'un référentiel que le projet n'a pas peut l'ajouter à lui-même, et une note dans le thread dit qu'il a été ajouté à ce thread seulement. Le clone se produit à mi-chemin de la tâche, donc le `CLAUDE.md` et les skills de ce référentiel n'étaient pas là quand le thread a commencé. Le thread suivant commence sans lui. Un référentiel ajouté de cette façon a besoin des mêmes [prérequis](#check-the-prerequisites) qu'un référentiel de projet : l'application Claude GitHub installée dessus et l'accès en push de votre compte GitHub.

325 327 

326Un projet n'a pas besoin d'un référentiel du tout. Ses threads peuvent toujours faire de la recherche, écrire des documents et écrire et exécuter du code dans leur propre sandbox, et ils livrent des fichiers à l'onglet **Library**. Un thread là peut aussi ajouter un référentiel à lui-même quand une tâche l'exige.328Un projet n'a pas besoin d'un référentiel du tout. Ses threads cloud peuvent toujours faire de la recherche, écrire des documents et écrire et exécuter du code dans leur propre sandbox, et ils livrent des fichiers à l'onglet **Library**. N'importe quel thread cloud peut aussi ajouter un référentiel à lui-même quand une tâche l'exige.

327 329 

328Une fois que le projet a des référentiels, Claude ne peut ajouter que des référentiels d'un propriétaire GitHub que le projet utilise déjà, qu'il en ajoute un au projet ou qu'un thread en ajoute un à lui-même. Pour apporter un référentiel d'un propriétaire différent, ajoutez-le au projet vous-même dans **Project settings > Environment**.330Une fois que le projet a des référentiels, Claude ne peut ajouter que des référentiels d'un propriétaire GitHub que le projet utilise déjà, qu'il en ajoute un au projet ou qu'un thread en ajoute un à lui-même. Pour apporter un référentiel d'un propriétaire différent, ajoutez-le au projet vous-même dans **Project settings > Environment**.

329 331 

330Pour un projet qui s'étend sur plusieurs référentiels, comme une fonctionnalité avec du code serveur, web, mobile et de bureau, ajoutez le ou les deux référentiels que presque chaque tâche touche et nommez les autres dans [les instructions du projet](#write-project-instructions) pour que Claude sache où le reste du code vit. Les threads commencent alors petit et tirent les autres référentiels seulement pour les tâches qui en ont besoin.332Pour un projet qui s'étend sur plusieurs référentiels, comme une fonctionnalité avec du code serveur, web, mobile et de bureau, ajoutez le ou les deux référentiels que presque chaque tâche touche et nommez les autres dans [les instructions du projet](#write-project-instructions) pour que Claude sache où le reste du code vit. Les threads cloud commencent alors petit et tirent les autres référentiels seulement pour les tâches qui en ont besoin.

331 333 

332<h3 id="what-threads-pick-up-from-your-repositories">334<h3 id="what-threads-pick-up-from-your-repositories">

333 Ce que les threads reprennent de vos référentiels335 Ce que les threads reprennent de vos référentiels

334</h3>336</h3>

335 337 

336Chaque thread clone chaque référentiel du projet et charge `CLAUDE.md` et les skills de tous. Les règles de permission, les hooks et `env` viennent seulement du `.claude/settings.json` dans le répertoire où le thread commence : à l'intérieur du référentiel quand le projet en a un, et au-dessus des clones quand il en a plusieurs, où aucun fichier du référentiel n'est lu pour eux.338Chaque thread cloud clone chaque référentiel du projet et charge `CLAUDE.md` et les skills de tous. Les règles de permission, les hooks et `env` viennent seulement du `.claude/settings.json` dans le répertoire où le thread commence : à l'intérieur du référentiel quand le projet en a un, et au-dessus des clones quand il en a plusieurs, où aucun fichier du référentiel n'est lu pour eux.

337 339 

338| Dans chaque référentiel | Un référentiel | Plusieurs référentiels |340| Dans chaque référentiel | Un référentiel | Plusieurs référentiels |

339| :------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |341| :------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------- |


348 Choisir un environnement pour les threads350 Choisir un environnement pour les threads

349</h3>351</h3>

350 352 

351Chaque nouveau thread démarre dans l'[environnement cloud](/docs/fr/cloud-environments) du projet. L'environnement définit quels domaines les threads peuvent atteindre, quelles variables d'environnement ils ont, quels identifiants API sont ajoutés à leurs demandes et ce que le script de configuration installe avant que Claude commence. Les threads utilisent un environnement par défaut hébergé par Anthropic jusqu'à ce que vous en choisissiez un dans **Project settings > Environment**.353Chaque nouveau thread cloud démarre dans l'[environnement cloud](/docs/fr/cloud-environments) du projet. L'environnement définit quels domaines les threads peuvent atteindre, quelles variables d'environnement ils ont, quels identifiants API sont ajoutés à leurs demandes et ce que le script de configuration installe avant que Claude commence. Les threads cloud utilisent un environnement par défaut hébergé par Anthropic jusqu'à ce que vous en choisissiez un dans **Project settings > Environment**.

352 354 

353Si les threads ont besoin d'atteindre une API interne ou un registre de packages privé, ou ont besoin d'un token que votre machine détient normalement, changez l'environnement plutôt que le projet : voir [Accès réseau](/docs/fr/cloud-environments#network-access), [Ajouter des identifiants API](/docs/fr/cloud-environments#add-api-credentials) et [Scripts de configuration](/docs/fr/cloud-environments#setup-scripts).355Si les threads cloud ont besoin d'atteindre une API interne ou un registre de packages privé, ou ont besoin d'un token que votre machine détient normalement, changez l'environnement plutôt que le projet : voir [Accès réseau](/docs/fr/cloud-environments#network-access), [Ajouter des identifiants API](/docs/fr/cloud-environments#add-api-credentials) et [Scripts de configuration](/docs/fr/cloud-environments#setup-scripts).

354 356 

355<h3 id="get-skills-plugins-connectors-and-tools-into-threads">357<h3 id="get-skills-plugins-connectors-and-tools-into-threads">

356 Obtenir des skills, des plugins, des connecteurs et des outils dans les threads358 Obtenir des skills, des plugins, des connecteurs et des outils dans les threads

357</h3>359</h3>

358 360 

359Les threads sont des sessions cloud, ils n'ont donc pas les skills, les serveurs MCP, les plugins et les outils installés seulement sur votre machine. Pour rendre chacun de ceux-ci disponible aux threads :361Les threads cloud n'ont pas les skills, les serveurs MCP, les plugins et les outils installés seulement sur votre machine. Un thread que Claude exécute sur votre machine via [Remote Control](/docs/fr/remote-control) utilise ce qui y est installé. Pour rendre chacun de ceux-ci disponible aux threads cloud :

360 362 

361* Skills, subagents et commandes : validez-les dans un référentiel que vous avez ajouté au projet, par exemple un skill à `.claude/skills/<skill-name>/SKILL.md`. Chaque thread clone chaque référentiel du projet et charge `.claude/skills/`, `.claude/agents/` et `.claude/commands/` à partir de chacun d'eux, donc un skill validé dans un référentiel est disponible dans chaque nouveau thread. Les threads chargent également les skills que vous activez pour votre compte claude.ai.363* Skills, subagents et commandes : validez-les dans un référentiel que vous avez ajouté au projet, par exemple un skill à `.claude/skills/<skill-name>/SKILL.md`. Chaque thread cloud clone chaque référentiel du projet et charge `.claude/skills/`, `.claude/agents/` et `.claude/commands/` à partir de chacun d'eux, donc un skill validé dans un référentiel est disponible dans chaque thread cloud. Les threads cloud chargent également les skills que vous activez pour votre compte claude.ai.

362* Plugins : ajoutez-les dans **Project settings > Plugins** ; ils se chargent dans chaque nouveau thread. Les plugins qu'un référentiel déclare dans son `.claude/settings.json` [ne se chargent pas dans les threads](/docs/fr/cloud-environments#what-carries-over-from-your-setup), car les threads sont des sessions cloud.364* Plugins : ajoutez-les dans **Project settings > Plugins** ; ils se chargent dans chaque nouveau thread cloud. Les plugins qu'un référentiel déclare dans son `.claude/settings.json` [ne se chargent pas dans les threads cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup).

363* Serveurs MCP : les threads obtiennent leurs outils MCP à partir des connecteurs sur votre compte claude.ai, qui sont des serveurs MCP que vous connectez une fois à [claude.ai/customize/connectors](https://claude.ai/customize/connectors) ou via le lien **Manage connectors** dans **Project settings > Environment**. Chaque thread peut tous les utiliser sans configuration par projet. La conversation du projet elle-même n'a pas de connecteurs, donc envoyez le travail qui en a besoin en tant que tâche pour un thread. Dans un projet avec un référentiel, les threads chargent également les serveurs MCP à partir du [`.mcp.json`](/docs/fr/cloud-environments#what-carries-over-from-your-setup) de ce référentiel. [Comment les connecteurs atteignent Claude Code](/docs/fr/mcp#how-connectors-reach-claude-code) énumère les règles pour les sessions cloud et les paramètres qui désactivent les connecteurs.365* Serveurs MCP : les threads cloud obtiennent leurs outils MCP à partir des connecteurs sur votre compte claude.ai, qui sont des serveurs MCP que vous connectez une fois à [claude.ai/customize/connectors](https://claude.ai/customize/connectors) ou via le lien **Manage connectors** dans **Project settings > Environment**. Chaque thread cloud peut tous les utiliser sans configuration par projet. La conversation du projet elle-même n'a pas de connecteurs, donc envoyez le travail qui en a besoin en tant que tâche pour un thread cloud. Dans un projet avec un référentiel, les threads cloud chargent également les serveurs MCP à partir du [`.mcp.json`](/docs/fr/cloud-environments#what-carries-over-from-your-setup) de ce référentiel. [Comment les connecteurs atteignent Claude Code](/docs/fr/mcp#how-connectors-reach-claude-code) énumère les règles pour les sessions cloud et les paramètres qui désactivent les connecteurs.

364* Outils en ligne de commande et packages : installez-les dans le [script de configuration](/docs/fr/cloud-environments#setup-scripts) de l'environnement.366* Outils en ligne de commande et packages : installez-les dans le [script de configuration](/docs/fr/cloud-environments#setup-scripts) de l'environnement.

365 367 

366Pour voir quels connecteurs un thread en cours d'exécution a à claude.ai/code, ouvrez le thread et sélectionnez **Connectors** dans le menu **+** à côté de sa boîte de message. Désactiver un connecteur là le supprime de ce thread, et il reste désactivé pour les threads démarrés plus tard jusqu'à ce que vous le réactiviez. Un thread reprend un connecteur que vous ajoutez ou reconnectez après le prochain message que vous lui envoyez.368Pour voir quels connecteurs un thread cloud en cours d'exécution a à claude.ai/code, ouvrez le thread et sélectionnez **Connectors** dans le menu **+** à côté de sa boîte de message. Désactiver un connecteur là le supprime de ce thread et enregistre cela comme votre paramètre par défaut du compte, donc les nouveaux threads et les chats claude.ai commencent sans lui jusqu'à ce que vous le réactiviez. Un thread cloud reprend un connecteur que vous ajoutez ou reconnectez après le prochain message que vous lui envoyez.

367 369 

368<h2 id="project-settings-reference">370<h2 id="project-settings-reference">

369 Référence des paramètres du projet371 Référence des paramètres du projet


434 Comment les projets se rapportent à d'autres fonctionnalités de Claude Code436 Comment les projets se rapportent à d'autres fonctionnalités de Claude Code

435</h2>437</h2>

436 438 

437Plusieurs fonctionnalités de Claude Code permettent à plus d'une session de fonctionner en même temps, donc exécuter du travail en parallèle n'est pas en soi à quoi sert un projet. Dans un projet, Claude démarre et suit les sessions au lieu de vous, chacun commence à partir des mêmes référentiels, instructions et mémoire, et le travail vit dans le cloud aussi longtemps qu'il dure. Voici comment chaque fonctionnalité voisine se connecte à un projet :439Plusieurs fonctionnalités de Claude Code permettent à plus d'une session de fonctionner en même temps, donc exécuter du travail en parallèle n'est pas en soi à quoi sert un projet. Dans un projet, Claude démarre et suit les sessions au lieu de vous, et chacun commence à partir des mêmes instructions. Voici comment chaque fonctionnalité voisine se connecte à un projet :

438 440 

439* **Claude Tag** : [Claude Tag](https://claude.com/docs/claude-tag/overview) est Claude dans les canaux Slack de votre équipe, sur les plans Team et Enterprise. N'importe qui dans un canal peut lui donner du travail, tout le monde dans le canal le voit et le dirige, et il utilise les connexions qu'un administrateur a configurées pour ce canal. Un projet est le vôtre seul : vous êtes le seul à lui envoyer du travail ou à voir ses threads, il utilise votre propre accès GitHub et vos connecteurs, et il est sur Pro et Max. [Comment Claude Tag diffère de Cowork et Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) a le côté à côté.441* **Claude Tag** : [Claude Tag](https://claude.com/docs/claude-tag/overview) est Claude dans les canaux Slack de votre équipe, sur les plans Team et Enterprise. N'importe qui dans un canal peut lui donner du travail, tout le monde dans le canal le voit et le dirige, et il utilise les connexions qu'un administrateur a configurées pour ce canal. Un projet est le vôtre seul : vous êtes le seul à lui envoyer du travail ou à voir ses threads, il utilise votre propre accès GitHub et vos connecteurs, et il est sur Pro et Max. [Comment Claude Tag diffère de Cowork et Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) a le côté à côté.

440* **Sessions cloud** : chaque thread est une [session cloud](/docs/fr/claude-code-on-the-web), démarrée et suivie par Claude au lieu de par vous. Une session cloud que vous avez démarrée vous-même peut devenir un projet ou en alimenter un via [**Continue as a project** ou **Move to project**](#start-from-an-existing-cloud-session).442* **Sessions cloud** : chaque thread est une [session cloud](/docs/fr/claude-code-on-the-web) sauf si vous demandez à Claude de l'exécuter sur votre machine. De toute façon, Claude la démarre et la suit au lieu de vous. Une session cloud que vous avez démarrée vous-même peut devenir un projet ou en alimenter un via [**Continue as a project** ou **Move to project**](#start-from-an-existing-cloud-session).

441* **Routines** : quand vous demandez du travail programmé dans un projet, Claude crée une [routine](/docs/fr/routines) qui s'exécute en tant que threads dans ce projet et apparaît sur son onglet **Routines**. Les routines que vous créez en dehors d'un projet continuent à fonctionner seules.443* **Routines** : quand vous demandez du travail programmé dans un projet, Claude crée une [routine](/docs/fr/routines) qui s'exécute en tant que threads dans ce projet et apparaît sur son onglet **Routines**. Les routines que vous créez en dehors d'un projet continuent à fonctionner seules.

442* **Sessions locales et agent view** : les sessions dans votre terminal, IDE ou l'environnement local de l'application de bureau s'exécutent sur votre machine et ne peuvent pas faire partie d'un projet. [Agent view](/docs/fr/agent-view) est un écran pour suivre plusieurs de ces sessions locales ; il n'a pas de coordinateur.444* **Sessions locales et agent view** : une session que vous démarrez vous-même dans votre terminal, IDE ou l'environnement local de l'application de bureau ne peut pas être ajoutée à un projet. Un projet atteint votre machine uniquement en exécutant un thread là-bas via [Remote Control](/docs/fr/remote-control). [Agent view](/docs/fr/agent-view) est un écran pour suivre plusieurs sessions locales que vous avez démarrées vous-même ; il n'a pas de coordinateur.

443* **Worktrees** : un [worktree](/docs/fr/worktrees) donne à chaque session locale sa propre copie de travail d'un référentiel pour que les sessions parallèles sur votre machine ne s'écrasent pas mutuellement. Les threads n'en ont pas besoin : chaque thread clone ses référentiels dans son propre sandbox cloud et travaille sur sa propre branche.445* **Worktrees** : un [worktree](/docs/fr/worktrees) donne à chaque session locale sa propre copie de travail d'un référentiel pour que les sessions parallèles sur votre machine ne s'écrasent pas mutuellement. Les threads cloud n'en ont pas besoin : chacun clone ses référentiels dans son propre sandbox cloud et travaille sur sa propre branche.

444* **Équipes d'agents** : une [équipe d'agents](/docs/fr/agent-teams) est une session qui démarre des sessions de coéquipiers pour une seule tâche, sur votre machine ou à l'intérieur d'une session cloud, et se termine avec cette tâche.446* **Équipes d'agents** : une [équipe d'agents](/docs/fr/agent-teams) est une session qui démarre des sessions de coéquipiers pour une seule tâche, sur votre machine ou à l'intérieur d'une session cloud, et se termine avec cette tâche.

445* **Projects dans le chat claude.ai et Cowork** : l'[expérience Projects antérieure](https://support.claude.com/en/articles/9517075-what-are-projects), qui groupe les conversations et les fichiers de référence sans threads ni coordinateur. Ces projets continuent à fonctionner comme ils le font aujourd'hui jusqu'à ce que l'expérience repensée les atteigne.447* **Projects dans le chat claude.ai et Cowork** : l'[expérience Projects antérieure](https://support.claude.com/en/articles/9517075-what-are-projects), qui groupe les conversations et les fichiers de référence sans threads ni coordinateur. Ces projets continuent à fonctionner comme ils le font aujourd'hui jusqu'à ce que l'expérience repensée les atteigne.

446 448 


451</h2>453</h2>

452 454 

453* Les projets sont disponibles à claude.ai/code, dans l'application de bureau et dans l'application mobile Claude, pas dans le CLI du terminal ou via Amazon Bedrock, la plateforme d'agents de Google Cloud ou Microsoft Foundry. La commande [`claude project`](/docs/fr/cli-reference) du CLI, qui gère l'état local de Claude Code pour un répertoire, n'est pas liée.455* Les projets sont disponibles à claude.ai/code, dans l'application de bureau et dans l'application mobile Claude, pas dans le CLI du terminal ou via Amazon Bedrock, la plateforme d'agents de Google Cloud ou Microsoft Foundry. La commande [`claude project`](/docs/fr/cli-reference) du CLI, qui gère l'état local de Claude Code pour un répertoire, n'est pas liée.

454* Les threads du projet sont des [sessions cloud](/docs/fr/claude-code-on-the-web) avec Anthropic comme fournisseur de modèle. [Sécurité](/docs/fr/security) et [Utilisation des données](/docs/fr/data-usage) couvrent comment les sessions cloud sont isolées et ce qui est conservé.456* Les threads du projet sont des [sessions cloud](/docs/fr/claude-code-on-the-web), ou des sessions sur votre propre machine via [Remote Control](/docs/fr/remote-control), avec Anthropic comme fournisseur de modèle dans les deux cas. [Sécurité](/docs/fr/security) et [Utilisation des données](/docs/fr/data-usage) couvrent comment les sessions cloud sont isolées et ce qui est conservé, et [Connexion et sécurité](/docs/fr/remote-control#connection-and-security) couvre comment un thread sur votre machine se connecte et ce qui est stocké.

455* Une session locale ne peut pas faire partie d'un projet.457* Vous ne pouvez pas ajouter une session que vous avez démarrée vous-même sur votre machine à un projet. Pour permettre à un projet d'exécuter un thread sur votre machine, connectez le dossier dans lequel il doit fonctionner via [Remote Control](/docs/fr/remote-control#requirements) : activez Remote Control sous **Paramètres > Claude Code** dans l'application de bureau Claude, ou exécutez `claude remote-control` dans le dossier et laissez-le s'exécuter. Cette machine doit avoir Claude Code v2.1.280 ou version ultérieure. Un projet ne peut pas non plus exécuter un thread sur votre machine tandis que **Require trusted devices** est activé dans vos paramètres claude.ai.

456* Le sandbox d'un thread se met en pause entre les tours et reprend quand le thread continue. Si le sandbox ne peut pas être repris, le thread continue à partir d'un clone frais, donc les modifications non validées peuvent être perdues. Sur les tâches longues, demandez à Claude de valider et de pousser le travail en cours.458* Le sandbox d'un thread cloud se met en pause entre les tours et reprend quand le thread continue. Si le sandbox ne peut pas être repris, le thread continue à partir d'un clone frais, donc les modifications non validées peuvent être perdues. Sur les tâches longues, demandez à Claude de valider et de pousser le travail en cours.

457* Un projet appartient à un utilisateur. Vous ne pouvez pas partager un projet ou ses threads avec un autre utilisateur, et les transcriptions de threads n'ont pas l'option de partage que les autres sessions cloud ont. Il n'y a pas de contrôles au niveau de l'organisation pour les projets pendant la bêta.459* Un projet appartient à un utilisateur. Vous ne pouvez pas partager un projet ou ses threads avec un autre utilisateur, et les transcriptions de threads n'ont pas l'option de partage que les autres sessions cloud ont. Il n'y a pas de contrôles au niveau de l'organisation pour les projets pendant la bêta.

458* Un thread appartient au seul projet qui l'a démarré. Vous ne pouvez pas déplacer ou copier un thread vers un autre projet, ou le déplacer pour qu'il soit seul. [**Move to project**](#start-from-an-existing-cloud-session) va seulement dans l'autre sens : il apporte le travail d'une session cloud dans un projet.460* Un thread appartient au seul projet qui l'a démarré. Vous ne pouvez pas déplacer ou copier un thread vers un autre projet, ou le déplacer pour qu'il soit seul. [**Move to project**](#start-from-an-existing-cloud-session) va seulement dans l'autre sens : il apporte le travail d'une session cloud dans un projet.

459 461 


467 Un thread semble bloqué469 Un thread semble bloqué

468</h3>470</h3>

469 471 

470Claude ne publie pas chaque étape qu'un thread prend, donc un thread qui s'affiche comme en cours d'exécution sans nouveaux messages dans la conversation du projet fonctionne généralement toujours. Un nouveau thread provisionne également son [environnement cloud](/docs/fr/cloud-environments) avant que Claude commence, donc sa première mise à jour prend un moment. Ouvrez le thread pour lire sa transcription. Si le thread attend une invite de permission, répondez-y là.472Claude ne publie pas chaque étape qu'un thread prend, donc un thread qui s'affiche comme en cours d'exécution sans nouveaux messages dans la conversation du projet fonctionne généralement toujours. Un nouveau thread cloud provisionne également son [environnement cloud](/docs/fr/cloud-environments) avant que Claude commence, donc sa première mise à jour prend un moment. Ouvrez le thread pour lire sa transcription. Si le thread attend une invite de permission, répondez-y là.

471 473 

472<h3 id="threads-guessed-or-stalled-instead-of-asking">474<h3 id="threads-guessed-or-stalled-instead-of-asking">

473 Les threads ont deviné ou se sont arrêtés au lieu de demander475 Les threads ont deviné ou se sont arrêtés au lieu de demander


489 Erreurs d'accès au référentiel491 Erreurs d'accès au référentiel

490</h3>492</h3>

491 493 

492Trois messages signifient qu'un thread ou le projet ne peut pas atteindre l'un de ses référentiels. Un thread du projet a besoin des [prérequis GitHub](#check-the-prerequisites) même quand vos autres sessions cloud clonent le même référentiel sans problème.494Trois messages signifient qu'un thread ou le projet ne peut pas atteindre l'un de ses référentiels. Un thread cloud du projet a besoin des [prérequis GitHub](#check-the-prerequisites) même quand vos autres sessions cloud clonent le même référentiel sans problème.

493 495 

494* **« Couldn't start the session — Claude doesn't have GitHub access to this project's repository »**, rapporté avant le démarrage du thread, quand l'application Claude GitHub n'est pas installée sur ce référentiel, est suspendue ou n'est pas liée au compte GitHub que vous avez connecté.496* **« Couldn't start the session — Claude doesn't have GitHub access to this project's repository »**, rapporté avant le démarrage du thread, quand l'application Claude GitHub n'est pas installée sur ce référentiel, est suspendue ou n'est pas liée au compte GitHub que vous avez connecté.

495* **« Unable to access your repository »**, rapporté par un thread quand son clone échoue : GitHub a rejeté le clone, le référentiel n'a pas été trouvé sous le nom que le projet a, ou la branche à partir de laquelle le thread a été demandé de commencer n'existe pas.497* **« Unable to access your repository »**, rapporté par un thread quand son clone échoue : GitHub a rejeté le clone, le référentiel n'a pas été trouvé sous le nom que le projet a, ou la branche à partir de laquelle le thread a été demandé de commencer n'existe pas.

Details

27 Installez le plugin27 Installez le plugin

28</h2>28</h2>

29 29 

30Dans une session Claude Code, installez à partir de la [place de marché officielle Anthropic](/docs/fr/discover-plugins#official-anthropic-marketplace) :30Dans une session Claude Code, installez à partir de la [place de marché officielle Anthropic](/docs/fr/plugins/anthropic-marketplaces) :

31 31 

32```text theme={null}32```text theme={null}

33/plugin install claude-security@claude-plugins-official33/plugin install claude-security@claude-plugins-official

34```34```

35 35 

36La commande ouvre les détails du plugin, où vous choisissez une [portée d'installation](/docs/fr/discover-plugins#install-plugins) pour démarrer l'installation.36La commande ouvre les détails du plugin, où vous choisissez une [portée d'installation](/docs/fr/plugins/install#install-a-plugin) pour démarrer l'installation.

37 37 

38Si l'installation échoue, la correction dépend du message que Claude Code signale :38Si l'installation échoue, la correction dépend du message que Claude Code signale :

39 39 

40* S'il signale `Marketplace "claude-plugins-official" not found`, ajoutez la place de marché avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.40* S'il signale `Marketplace "claude-plugins-official" not found`, ajoutez la place de marché avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

41* S'il signale qu'il [ne peut pas trouver le plugin sur la place de marché](/docs/fr/discover-plugins#install-plugins), vérifiez le nom du plugin pour une faute de frappe.41* S'il signale qu'il [ne peut pas trouver le plugin sur la place de marché](/docs/fr/plugins/install#install-a-plugin), vérifiez le nom du plugin pour une faute de frappe.

42 42 

43Vérifiez le résumé d'installation. S'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications du plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) pour activer le plugin dans votre session actuelle.43Vérifiez le résumé d'installation. S'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications du plugin sans redémarrer](/docs/fr/plugins/cli-reference#reload-plugins) pour activer le plugin dans votre session actuelle.

44 44 

45Une fois le plugin actif, vous êtes prêt à [analyser et corriger votre base de code](#scan-and-fix-your-codebase).45Une fois le plugin actif, vous êtes prêt à [analyser et corriger votre base de code](#scan-and-fix-your-codebase).

46 46 


168* [Code Review](/docs/fr/code-review) : configurez l'examen multi-agents au moment de la demande de fusion168* [Code Review](/docs/fr/code-review) : configurez l'examen multi-agents au moment de la demande de fusion

169* [Claude Security](https://claude.com/product/claude-security) : le service géré qui surveille les référentiels connectés169* [Claude Security](https://claude.com/product/claude-security) : le service géré qui surveille les référentiels connectés

170* [Sécurité Claude Code](/docs/fr/security) : comment Claude Code aborde la confiance, les permissions et les protections170* [Sécurité Claude Code](/docs/fr/security) : comment Claude Code aborde la confiance, les permissions et les protections

171* [Découvrez et installez des plugins](/docs/fr/discover-plugins#official-anthropic-marketplace) : parcourez d'autres plugins officiels171* [Installer et gérer les plugins](/docs/fr/plugins/install) : trouvez et installez d'autres plugins à partir de la marketplace officielle

claude-tag.md +0 −11 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Tag

6 

7> Intégrez Claude dans les canaux Slack de votre équipe avec Claude Tag et trouvez sa documentation de configuration et d'utilisation sur claude.com.

8 

9[Claude Tag](https://claude.com/product/tag) est une intégration Slack qui exécute `@Claude` dans les canaux de votre équipe en tant qu'identité partagée de votre organisation avec un accès configuré par l'administrateur. Toute personne dans un canal peut marquer `@Claude` dans un fil de discussion et lui assigner une tâche. Consultez la [documentation Claude Tag](https://claude.com/docs/claude-tag/overview) sur claude.com pour la configurer et commencer à l'utiliser.

10 

11Claude Tag est disponible sur les plans Team et Enterprise, et est distinct de l'intégration antérieure [Claude Code in Slack](/docs/fr/slack), qui exécute chaque session sous le compte d'un utilisateur individuel. Sur les plans Pro et Max, où Claude Tag n'est pas disponible, Claude Code in Slack reste le chemin de configuration.

Details

37| `claude import [source]` | Démarrer une session interactive qui exécute [`/import`](/docs/fr/commands#all-commands) pour apporter la configuration d'autres agents de codage dans Claude Code. Accepte les mêmes options `--dry-run` et `--yes` que la commande. Non disponible sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou Claude Platform sur AWS. Également indisponible quand vous désactivez [la récupération des drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching). Nécessite Claude Code v2.1.213 ou ultérieur | `claude import codex --dry-run` |37| `claude import [source]` | Démarrer une session interactive qui exécute [`/import`](/docs/fr/commands#all-commands) pour apporter la configuration d'autres agents de codage dans Claude Code. Accepte les mêmes options `--dry-run` et `--yes` que la commande. Non disponible sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, ou Claude Platform sur AWS. Également indisponible quand vous désactivez [la récupération des drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching). Nécessite Claude Code v2.1.213 ou ultérieur | `claude import codex --dry-run` |

38| `claude logs <id>` | Imprimer la sortie récente d'une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |38| `claude logs <id>` | Imprimer la sortie récente d'une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |

39| `claude mcp` | Configurer les serveurs Model Context Protocol (MCP) | Voir la [documentation Claude Code MCP](/docs/fr/mcp). |39| `claude mcp` | Configurer les serveurs Model Context Protocol (MCP) | Voir la [documentation Claude Code MCP](/docs/fr/mcp). |

40| `claude mcp login <name>` | Exécuter le flux OAuth d'un serveur MCP configuré sans ouvrir le panneau interactif `/mcp`. Fonctionne pour les serveurs HTTP, SSE et claude.ai connector. Ajoutez `--no-browser` sur SSH pour imprimer l'URL d'autorisation au lieu d'ouvrir un navigateur, puis collez l'URL de redirection à l'invite. Nécessite Claude Code v2.1.186 ou ultérieur. Voir [S'authentifier à partir de la ligne de commande](/docs/fr/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |40| `claude mcp login <name>` | Exécuter le flux OAuth d'un serveur MCP configuré sans ouvrir le panneau interactif `/mcp`. Fonctionne pour les serveurs HTTP, SSE et claude.ai connector. Ajoutez `--no-browser` sur SSH pour imprimer l'URL d'autorisation au lieu d'ouvrir un navigateur, puis collez l'URL de redirection à l'invite. Voir [S'authentifier à partir de la ligne de commande](/docs/fr/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |

41| `claude mcp logout <name>` | Effacer les identifiants OAuth stockés pour un serveur MCP. Nécessite Claude Code v2.1.186 ou ultérieur | `claude mcp logout sentry` |41| `claude mcp logout <name>` | Effacer les identifiants OAuth stockés pour un serveur MCP | `claude mcp logout sentry` |

42| `claude plugin` | Gérer les [plugins](/docs/fr/plugins) Claude Code. Alias : `claude plugins`. Voir la [référence des plugins](/docs/fr/plugins-reference#cli-commands-reference) pour les sous-commandes | `claude plugin install code-review@claude-plugins-official` |42| `claude plugin` | Gérer les [plugins](/docs/fr/plugins/overview) Claude Code. Alias : `claude plugins`. Voir la [référence des plugins](/docs/fr/plugins/cli-reference#claude-plugin-commands) pour les sous-commandes | `claude plugin install code-review@claude-plugins-official` |

43| `claude project purge [path]` | Supprimer tout l'état local de Claude Code pour un projet : transcriptions, listes de tâches, journaux de débogage, historique des modifications de fichiers, lignes d'historique des invites, et l'entrée du projet dans `~/.claude.json`. Omettez `[path]` pour choisir dans une liste interactive. Drapeaux : `--dry-run` pour prévisualiser, `-y`/`--yes` pour ignorer la confirmation, `-i`/`--interactive` pour confirmer chaque élément, `--all` pour chaque projet. Voir [Effacer les données locales](/docs/fr/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |43| `claude project purge [path]` | Supprimer tout l'état local de Claude Code pour un projet : transcriptions, listes de tâches, journaux de débogage, historique des modifications de fichiers, lignes d'historique des invites, et l'entrée du projet dans `~/.claude.json`. Omettez `[path]` pour choisir dans une liste interactive. Drapeaux : `--dry-run` pour prévisualiser, `-y`/`--yes` pour ignorer la confirmation, `-i`/`--interactive` pour confirmer chaque élément, `--all` pour chaque projet. Voir [Effacer les données locales](/docs/fr/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

44| `claude remote-control` | Démarrer un serveur [Remote Control](/docs/fr/remote-control) pour contrôler Claude Code depuis Claude.ai ou l'application Claude. S'exécute en mode serveur (pas de session interactive locale). Voir [Drapeaux du mode serveur](/docs/fr/remote-control#start-a-remote-control-session). Après avoir arrêté le serveur, vous pouvez ramener les sessions qu'il servait. Voir [Reprendre les sessions après l'arrêt du serveur](/docs/fr/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |44| `claude remote-control` | Démarrer un serveur [Remote Control](/docs/fr/remote-control) pour contrôler Claude Code depuis Claude.ai ou l'application Claude. S'exécute en mode serveur (pas de session interactive locale). Voir [Drapeaux du mode serveur](/docs/fr/remote-control#start-a-remote-control-session). Après avoir arrêté le serveur, vous pouvez ramener les sessions qu'il servait. Voir [Reprendre les sessions après l'arrêt du serveur](/docs/fr/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |

45| `claude respawn <id>` | Redémarrer une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell), en cours d'exécution ou arrêtée, avec sa conversation intacte. Utilisez `--all` pour redémarrer chaque session en cours d'exécution, par exemple pour récupérer un binaire Claude Code mis à jour | `claude respawn 7c5dcf5d` |45| `claude respawn <id>` | Redémarrer une [session d'arrière-plan](/docs/fr/agent-view#manage-sessions-from-the-shell), en cours d'exécution ou arrêtée, avec sa conversation intacte. Utilisez `--all` pour redémarrer chaque session en cours d'exécution, par exemple pour récupérer un binaire Claude Code mis à jour | `claude respawn 7c5dcf5d` |


114| `--permission-mode` | Commencer dans un [mode de permission](/docs/fr/permission-modes) spécifié. Accepte `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, ou `manual` comme alias pour `default`. L'alias `manual` sélectionne le mode de permission que l'interface utilisateur étiquette Manuel et nécessite Claude Code v2.1.200 ou ultérieur ; `claude --help` le répertorie à la place de `default`, et les deux valeurs fonctionnent. Remplace `defaultMode` des fichiers de paramètres. Sans ce drapeau ou `--dangerously-skip-permissions`, une nouvelle session démarre dans le mode de permission décrit dans [quel mode de permission une session démarre](/docs/fr/permission-modes#which-mode-a-session-starts-in). Pour `-p`, c'est `default` lorsque rien n'est configuré | `claude --permission-mode plan` |114| `--permission-mode` | Commencer dans un [mode de permission](/docs/fr/permission-modes) spécifié. Accepte `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, ou `manual` comme alias pour `default`. L'alias `manual` sélectionne le mode de permission que l'interface utilisateur étiquette Manuel et nécessite Claude Code v2.1.200 ou ultérieur ; `claude --help` le répertorie à la place de `default`, et les deux valeurs fonctionnent. Remplace `defaultMode` des fichiers de paramètres. Sans ce drapeau ou `--dangerously-skip-permissions`, une nouvelle session démarre dans le mode de permission décrit dans [quel mode de permission une session démarre](/docs/fr/permission-modes#which-mode-a-session-starts-in). Pour `-p`, c'est `default` lorsque rien n'est configuré | `claude --permission-mode plan` |

115| `--permission-prompt-tool` | Spécifier un outil MCP pour gérer les invites de permission en mode non interactif. Claude Code attend que le serveur MCP de cet outil se connecte avant d'exécuter le premier tour, jusqu'au délai d'expiration de démarrage [`MCP_TIMEOUT`](/docs/fr/env-vars), 30 secondes par défaut. <br /><br />L'outil d'invite ne peut pas approuver un outil MCP marqué comme [nécessitant une interaction utilisateur](/docs/fr/mcp#require-approval-for-a-specific-tool) : Claude Code convertit un résultat `allow` pour celui-ci en refus. Cette restriction nécessite Claude Code v2.1.199 ou ultérieur | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |115| `--permission-prompt-tool` | Spécifier un outil MCP pour gérer les invites de permission en mode non interactif. Claude Code attend que le serveur MCP de cet outil se connecte avant d'exécuter le premier tour, jusqu'au délai d'expiration de démarrage [`MCP_TIMEOUT`](/docs/fr/env-vars), 30 secondes par défaut. <br /><br />L'outil d'invite ne peut pas approuver un outil MCP marqué comme [nécessitant une interaction utilisateur](/docs/fr/mcp#require-approval-for-a-specific-tool) : Claude Code convertit un résultat `allow` pour celui-ci en refus. Cette restriction nécessite Claude Code v2.1.199 ou ultérieur | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

116| `--permission-prompts` | Définir qui répond aux invites de permission en mode impression. Avec le `host` par défaut, Claude Code les envoie à l'hôte du SDK Agent ou à l'outil `--permission-prompt-tool`. Passez `none` lorsque personne ne peut répondre, et Claude Code les refuse à la place. Voir [Désactiver les invites de permission dans les exécutions sans surveillance](/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs). Nécessite Claude Code v2.1.259 ou ultérieur | `claude -p --permission-prompts none "query"` |116| `--permission-prompts` | Définir qui répond aux invites de permission en mode impression. Avec le `host` par défaut, Claude Code les envoie à l'hôte du SDK Agent ou à l'outil `--permission-prompt-tool`. Passez `none` lorsque personne ne peut répondre, et Claude Code les refuse à la place. Voir [Désactiver les invites de permission dans les exécutions sans surveillance](/docs/fr/headless#turn-off-permission-prompts-in-unattended-runs). Nécessite Claude Code v2.1.259 ou ultérieur | `claude -p --permission-prompts none "query"` |

117| `--plugin-dir` | Charger un plugin à partir d'un répertoire ou d'une archive `.zip`, ou plusieurs à partir d'un [dossier de plugins](/docs/fr/plugins#test-your-plugins-locally), pour cette session uniquement. Chaque drapeau prend un chemin. Répétez le drapeau pour plus de chemins : `--plugin-dir A --plugin-dir B.zip`. Passer un dossier de plugins nécessite Claude Code v2.1.265 ou ultérieur | `claude --plugin-dir ./my-plugin` |117| `--plugin-dir` | Charger un plugin à partir d'un répertoire ou d'une archive `.zip`, ou plusieurs à partir d'un [dossier de plugins](/docs/fr/plugins/create#load-a-directory-or-archive-for-one-session), pour cette session uniquement. Chaque drapeau prend un chemin. Répétez le drapeau pour plus de chemins : `--plugin-dir A --plugin-dir B.zip`. Passer un dossier de plugins nécessite Claude Code v2.1.265 ou ultérieur | `claude --plugin-dir ./my-plugin` |

118| `--plugin-url` | Récupérer une archive `.zip` de plugin à partir d'une URL pour cette session uniquement. Répétez le drapeau pour plusieurs plugins, ou passez des URL séparées par des espaces dans une seule valeur entre guillemets | `claude --plugin-url https://example.com/plugin.zip` |118| `--plugin-url` | Récupérer une archive `.zip` de plugin à partir d'une URL pour cette session uniquement. Répétez le drapeau pour plusieurs plugins, ou passez des URL séparées par des espaces dans une seule valeur entre guillemets | `claude --plugin-url https://example.com/plugin.zip` |

119| `--print`, `-p` | Imprimer la réponse sans mode interactif (voir la [documentation du SDK Agent](/docs/fr/agent-sdk/overview) pour les détails d'utilisation programmatique) | `claude -p "query"` |119| `--print`, `-p` | Imprimer la réponse sans mode interactif (voir la [documentation du SDK Agent](/docs/fr/agent-sdk/overview) pour les détails d'utilisation programmatique) | `claude -p "query"` |

120| `--prompt-suggestions` | Émettre un message `prompt_suggestion` avec une prédiction du prochain message utilisateur après chaque tour qui en génère un ; les très courtes conversations peuvent n'en produire aucune. Nécessite `--print`, `--output-format stream-json`, et `--verbose`. Voir [Suggestions d'invite](/docs/fr/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |120| `--prompt-suggestions` | Émettre un message `prompt_suggestion` avec une prédiction du prochain message utilisateur après chaque tour qui en génère un ; les très courtes conversations peuvent n'en produire aucune. Nécessite `--print`, `--output-format stream-json`, et `--verbose`. Voir [Suggestions d'invite](/docs/fr/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |


134| `--system-prompt-file` | Charger l'invite système à partir d'un fichier, en remplaçant l'invite par défaut | `claude --system-prompt-file ./custom-prompt.txt` |134| `--system-prompt-file` | Charger l'invite système à partir d'un fichier, en remplaçant l'invite par défaut | `claude --system-prompt-file ./custom-prompt.txt` |

135| `--system-prompt-snapshot` | Passer `off` pour reconstruire l'invite système à chaque requête au lieu de réutiliser l'invite [enregistrée à la première requête de la conversation](#system-prompt-flags-in-resumed-conversations), par exemple pendant que vous itérez sur le texte `--append-system-prompt` entre les exécutions `--continue`. Nécessite Claude Code v2.1.257 ou ultérieur | `claude --system-prompt-snapshot off` |135| `--system-prompt-snapshot` | Passer `off` pour reconstruire l'invite système à chaque requête au lieu de réutiliser l'invite [enregistrée à la première requête de la conversation](#system-prompt-flags-in-resumed-conversations), par exemple pendant que vous itérez sur le texte `--append-system-prompt` entre les exécutions `--continue`. Nécessite Claude Code v2.1.257 ou ultérieur | `claude --system-prompt-snapshot off` |

136| `--teleport` | Reprendre une [session web](/docs/fr/claude-code-on-the-web) dans votre terminal local | `claude --teleport` |136| `--teleport` | Reprendre une [session web](/docs/fr/claude-code-on-the-web) dans votre terminal local | `claude --teleport` |

137| `--teammate-mode` | Définir comment les coéquipiers de l'[équipe d'agents](/docs/fr/agent-teams) s'affichent : `in-process` (par défaut), `auto`, `tmux`, ou `iterm2` (ajouté dans v2.1.186). Remplace le paramètre [`teammateMode`](/docs/fr/settings-reference#teammatemode) pour cette session. Voir [Choisir un mode d'affichage](/docs/fr/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |137| `--teammate-mode` | Définir comment les coéquipiers de l'[équipe d'agents](/docs/fr/agent-teams) s'affichent : `in-process` (par défaut), `auto`, `tmux`, ou `iterm2`. Remplace le paramètre [`teammateMode`](/docs/fr/settings-reference#teammatemode) pour cette session. Voir [Choisir un mode d'affichage](/docs/fr/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |

138| `--tmux` | Créer une session tmux pour le worktree. Nécessite `--worktree`. Utilise les volets natifs iTerm2 lorsqu'ils sont disponibles ; passez `--tmux=classic` pour le tmux traditionnel | `claude -w feature-auth --tmux` |138| `--tmux` | Créer une session tmux pour le worktree. Nécessite `--worktree`. Utilise les volets natifs iTerm2 lorsqu'ils sont disponibles ; passez `--tmux=classic` pour le tmux traditionnel | `claude -w feature-auth --tmux` |

139| `--tools` | Restreindre les outils intégrés que Claude peut utiliser. Utilisez `""` pour désactiver tous, `"default"` pour l'ensemble par défaut, ou des noms d'outils comme `"Bash,Edit,Read"`. Sur macOS, Linux et WSL, l'ensemble par défaut laisse de côté `Glob` et `Grep`, comme décrit sous [Comportement de l'outil Glob](/docs/fr/tools-reference#glob-tool-behavior). Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/tools-reference#task-tool-availability) ici, Claude Code opte également la session. Le drapeau n'affecte pas les outils MCP ; pour les refuser aussi, utilisez `--disallowedTools "mcp__*"`. Une liste qui omet [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior) ne le supprime pas ; `""` le supprime uniquement lorsqu'aucun outil MCP ne reste | `claude --tools "Bash,Edit,Read"` |139| `--tools` | Restreindre les outils intégrés que Claude peut utiliser. Utilisez `""` pour désactiver tous, `"default"` pour l'ensemble par défaut, ou des noms d'outils comme `"Bash,Edit,Read"`. Sur macOS, Linux et WSL, l'ensemble par défaut laisse de côté `Glob` et `Grep`, comme décrit sous [Comportement de l'outil Glob](/docs/fr/tools-reference#glob-tool-behavior). Si vous nommez l'un des [outils de suivi des tâches](/docs/fr/tools-reference#task-tool-availability) ici, Claude Code opte également la session. Le drapeau n'affecte pas les outils MCP ; pour les refuser aussi, utilisez `--disallowedTools "mcp__*"`. Une liste qui omet [`EndConversation`](/docs/fr/tools-reference#endconversation-tool-behavior) ne le supprime pas ; `""` le supprime uniquement lorsqu'aucun outil MCP ne reste | `claude --tools "Bash,Edit,Read"` |

140| `--verbose` | Activer la journalisation détaillée, affiche la sortie complète tour par tour. Remplace le paramètre [`viewMode`](/docs/fr/settings-reference#viewmode) pour cette session | `claude --verbose` |140| `--verbose` | Activer la journalisation détaillée, affiche la sortie complète tour par tour. Remplace le paramètre [`viewMode`](/docs/fr/settings-reference#viewmode) pour cette session | `claude --verbose` |

Details

300| Vos serveurs MCP `.mcp.json` du dépôt | Oui, dans une session avec un seul dépôt | Partie du clone, trouvé à partir du répertoire de travail de la session |300| Vos serveurs MCP `.mcp.json` du dépôt | Oui, dans une session avec un seul dépôt | Partie du clone, trouvé à partir du répertoire de travail de la session |

301| Votre `.claude/rules/` du dépôt | Oui | Partie du clone |301| Votre `.claude/rules/` du dépôt | Oui | Partie du clone |

302| Votre `.claude/skills/`, `.claude/agents/`, `.claude/commands/` du dépôt | Oui | Partie du clone |302| Votre `.claude/skills/`, `.claude/agents/`, `.claude/commands/` du dépôt | Oui | Partie du clone |

303| Plugins et places de marché déclarés dans le `.claude/settings.json` de votre dépôt | Non | Une session cloud n'installe pas les plugins qu'un dépôt active sous [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins), y compris ceux des places de marché qu'il liste sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces). Activez le plugin pour votre compte claude.ai à la place, afin que Claude Code le charge en tant que [plugin synchronisé](/docs/fr/plugins-reference#synced-plugins) |303| Plugins et places de marché déclarés dans le `.claude/settings.json` de votre dépôt | Non | Une session cloud n'installe pas les plugins qu'un dépôt active sous [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins), y compris ceux des places de marché qu'il liste sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) |

304| Les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) de votre organisation | Oui | Récupérés des serveurs d'Anthropic quand la session démarre. Consultez [Couverture de surface](/docs/fr/model-config#surface-coverage) pour savoir comment `availableModels` est appliqué dans les sessions cloud. Les paramètres déployés sur votre appareil via MDM ou des fichiers de paramètres gérés ne s'appliquent pas, car la session s'exécute sur une VM gérée par Anthropic ; dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments), les sessions lisent également le fichier de paramètres gérés dans l'image d'exécuteur, selon [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) |304| Les [paramètres gérés par le serveur](/docs/fr/server-managed-settings) de votre organisation | Oui | Récupérés des serveurs d'Anthropic quand la session démarre. Consultez [Couverture de surface](/docs/fr/model-config#surface-coverage) pour savoir comment `availableModels` est appliqué dans les sessions cloud. Les paramètres déployés sur votre appareil via MDM ou des fichiers de paramètres gérés ne s'appliquent pas, car la session s'exécute sur une VM gérée par Anthropic ; dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments), les sessions lisent également le fichier de paramètres gérés dans l'image d'exécuteur, selon [comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) |

305| Votre `~/.claude/CLAUDE.md` utilisateur | Non | Vit sur votre machine, pas dans le dépôt |305| Votre `~/.claude/CLAUDE.md` utilisateur | Non | Vit sur votre machine, pas dans le dépôt |

306| Vos `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` utilisateur | Non | Vivent sur votre machine, pas dans le dépôt. Validez-les dans le répertoire `.claude/` du dépôt à la place. Les sessions cloud chargent automatiquement les compétences que vous activez sur claude.ai |306| Vos `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` utilisateur | Non | Vivent sur votre machine, pas dans le dépôt. Validez-les dans le répertoire `.claude/` du dépôt à la place. Les sessions cloud chargent automatiquement les compétences que vous activez sur claude.ai |

307| Plugins activés seulement dans vos paramètres utilisateur | Non | L'`enabledPlugins` au niveau utilisateur vit dans `~/.claude/settings.json` sur votre machine. Activez-les pour votre compte claude.ai à la place, afin que Claude Code les charge en tant que [plugins synchronisés](/docs/fr/plugins-reference#synced-plugins) |307| Plugins activés seulement dans vos paramètres utilisateur | Non | L'`enabledPlugins` au niveau utilisateur vit dans `~/.claude/settings.json` sur votre machine |

308| Serveurs MCP que vous avez ajoutés avec `claude mcp add` à la portée locale par défaut ou à la portée utilisateur | Non | Ceux-ci écrivent dans `~/.claude.json` sur votre machine, pas le dépôt. Ajoutez le serveur avec `claude mcp add --scope project`, qui écrit le [`.mcp.json`](/docs/fr/mcp#project-scope) du dépôt, et validez ce fichier. Une session avec un seul dépôt le charge |308| Serveurs MCP que vous avez ajoutés avec `claude mcp add` à la portée locale par défaut ou à la portée utilisateur | Non | Ceux-ci écrivent dans `~/.claude.json` sur votre machine, pas le dépôt. Ajoutez le serveur avec `claude mcp add --scope project`, qui écrit le [`.mcp.json`](/docs/fr/mcp#project-scope) du dépôt, et validez ce fichier. Une session avec un seul dépôt le charge |

309| Variables de transport dans le bloc `env` de `.claude/settings.json` de votre dépôt, comme `NODE_EXTRA_CA_CERTS` et les [variables de certificat client mTLS](/docs/fr/network-config#mtls-authentication) | Non | L'environnement d'hébergement gère la connexion API de la session, donc Claude Code ignore ces clés et note chaque clé ignorée dans le journal de débogage de la session |309| Variables de transport dans le bloc `env` de `.claude/settings.json` de votre dépôt, comme `NODE_EXTRA_CA_CERTS` et les [variables de certificat client mTLS](/docs/fr/network-config#mtls-authentication) | Non | L'environnement d'hébergement gère la connexion API de la session, donc Claude Code ignore ces clés et note chaque clé ignorée dans le journal de débogage de la session |

310| Clés API et jetons pour les services que Claude appelle | Sur les plans Pro et Max, en tant qu'[identifiants API](#add-api-credentials) | Vous ajoutez la clé une fois sur l'environnement et le proxy d'agent la joint aux requêtes pour les hôtes que vous listez. Une clé que le proxy d'agent [ne peut pas joindre](#requests-that-never-get-the-credential), ou n'importe quelle clé sur un plan Team ou Enterprise, reste dans une variable d'environnement |310| Clés API et jetons pour les services que Claude appelle | Sur les plans Pro et Max, en tant qu'[identifiants API](#add-api-credentials) | Vous ajoutez la clé une fois sur l'environnement et le proxy d'agent la joint aux requêtes pour les hôtes que vous listez. Une clé que le proxy d'agent [ne peut pas joindre](#requests-that-never-get-the-credential), ou n'importe quelle clé sur un plan Team ou Enterprise, reste dans une variable d'environnement |

commands.md +4 −4

Details

61| `/autocompact [auto\|<tokens>]` | Définir la fenêtre de compaction automatique : le degré de remplissage de la fenêtre de contexte avant que Claude Code ne compacte automatiquement. Passez une taille telle que `500k`, ou `auto` pour revenir à la fenêtre ajustée pour votre modèle. Claude Code enregistre la valeur dans les paramètres utilisateur et l'applique à la session actuelle. Consultez [Définir la fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window) pour les valeurs acceptées et ce qui la remplace. Sans argument, ouvre une boîte de dialogue qui affiche la fenêtre actuelle. Nécessite Claude Code v2.1.221 ou ultérieur |61| `/autocompact [auto\|<tokens>]` | Définir la fenêtre de compaction automatique : le degré de remplissage de la fenêtre de contexte avant que Claude Code ne compacte automatiquement. Passez une taille telle que `500k`, ou `auto` pour revenir à la fenêtre ajustée pour votre modèle. Claude Code enregistre la valeur dans les paramètres utilisateur et l'applique à la session actuelle. Consultez [Définir la fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window) pour les valeurs acceptées et ce qui la remplace. Sans argument, ouvre une boîte de dialogue qui affiche la fenêtre actuelle. Nécessite Claude Code v2.1.221 ou ultérieur |

62| `/autofix-pr [prompt]` | Générer une session [Claude Code sur le web](/docs/fr/claude-code-on-the-web#auto-fix-pull-requests) qui surveille la demande de fusion de la branche actuelle et pousse les corrections lorsque l'intégration continue échoue ou que les relecteurs laissent des commentaires. Détecte la demande de fusion ouverte à partir de votre branche extraite avec `gh pr view` ; pour surveiller une autre demande de fusion, extrayez d'abord sa branche. Par défaut, la session cloud est invitée à corriger chaque échec d'intégration continue et chaque commentaire de relecteur ; passez une invite pour lui donner des instructions différentes, par exemple `/autofix-pr only fix lint and type errors`. Nécessite l'interface de ligne de commande `gh` et l'accès à [Claude Code sur le web](/docs/fr/claude-code-on-the-web) |62| `/autofix-pr [prompt]` | Générer une session [Claude Code sur le web](/docs/fr/claude-code-on-the-web#auto-fix-pull-requests) qui surveille la demande de fusion de la branche actuelle et pousse les corrections lorsque l'intégration continue échoue ou que les relecteurs laissent des commentaires. Détecte la demande de fusion ouverte à partir de votre branche extraite avec `gh pr view` ; pour surveiller une autre demande de fusion, extrayez d'abord sa branche. Par défaut, la session cloud est invitée à corriger chaque échec d'intégration continue et chaque commentaire de relecteur ; passez une invite pour lui donner des instructions différentes, par exemple `/autofix-pr only fix lint and type errors`. Nécessite l'interface de ligne de commande `gh` et l'accès à [Claude Code sur le web](/docs/fr/claude-code-on-the-web) |

63| `/background [prompt]` | Détacher la session actuelle pour s'exécuter en tant qu'[agent en arrière-plan](/docs/fr/agent-view) et libérer ce terminal. Passez une invite pour envoyer une instruction supplémentaire avant de détacher. Surveillez la session avec `claude agents`. Pour copier la conversation dans une nouvelle session en arrière-plan tandis que celle-ci continue de s'exécuter, utilisez `/fork`. Alias : `/bg` |63| `/background [prompt]` | Détacher la session actuelle pour s'exécuter en tant qu'[agent en arrière-plan](/docs/fr/agent-view) et libérer ce terminal. Passez une invite pour envoyer une instruction supplémentaire avant de détacher. Surveillez la session avec `claude agents`. Pour copier la conversation dans une nouvelle session en arrière-plan tandis que celle-ci continue de s'exécuter, utilisez `/fork`. Alias : `/bg` |

64| `/batch <instruction>` | **[Skill](/docs/fr/skills#bundled-skills).** Orchestrer les modifications à grande échelle dans une base de code en parallèle. Recherche la base de code, décompose le travail en 5 à 30 unités indépendantes, et présente un plan. Une fois approuvé, génère un [sous-agent en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) par unité dans un [git worktree](/docs/fr/worktrees) isolé. Chaque sous-agent implémente son unité, exécute les tests, et ouvre une demande de fusion. Nécessite un référentiel git. Exemple : `/batch migrate src/ from JavaScript to TypeScript` |64| `/batch <instruction>` | **[Skill](/docs/fr/skills#bundled-skills).** Orchestrer les modifications à grande échelle dans une base de code en parallèle. Recherche la base de code, décompose le travail en 5 à 30 unités indépendantes, et présente un plan. Une fois approuvé, génère un [sous-agent en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) par unité dans un [worktree](/docs/fr/worktrees) isolé. Chaque sous-agent implémente son unité, exécute les tests, et publie sa modification. Nécessite un référentiel git ou un [hook `WorktreeCreate`](/docs/fr/worktrees#non-git-version-control) qui crée les worktrees. En dehors d'un référentiel git, `/batch` nécessite Claude Code v2.1.281 ou ultérieur. Exemple : `/batch migrate src/ from JavaScript to TypeScript` |

65| `/branch [name]` | Créer une branche de la conversation actuelle à ce stade, afin que vous puissiez essayer une direction différente sans perdre la conversation telle qu'elle se présente. Vous bascule dans la branche et préserve l'original, auquel vous pouvez revenir avec `/resume`. Pour exécuter une copie en tant que [session en arrière-plan](/docs/fr/agent-view) distincte au lieu de basculer dedans, utilisez `/fork` ; pour confier une tâche secondaire à un [sous-agent](/docs/fr/sub-agents) qui rend compte dans cette conversation, utilisez `/subtask` |65| `/branch [name]` | Créer une branche de la conversation actuelle à ce stade, afin que vous puissiez essayer une direction différente sans perdre la conversation telle qu'elle se présente. Vous bascule dans la branche et préserve l'original, auquel vous pouvez revenir avec `/resume`. Pour exécuter une copie en tant que [session en arrière-plan](/docs/fr/agent-view) distincte au lieu de basculer dedans, utilisez `/fork` ; pour confier une tâche secondaire à un [sous-agent](/docs/fr/sub-agents) qui rend compte dans cette conversation, utilisez `/subtask` |

66| `/btw [question]` | Poser une [question secondaire](/docs/fr/interactive-mode#side-questions-with-%2Fbtw) sur la session actuelle sans l'ajouter à la conversation. Si vous exécutez `/btw` sans question, Claude Code affiche votre question secondaire la plus récente afin que vous puissiez parcourir les réponses antérieures ; si vous n'en avez pas encore posé une, Claude Code affiche une ligne d'utilisation. Avant la v2.1.212, `/btw` nécessitait une question |66| `/btw [question]` | Poser une [question secondaire](/docs/fr/interactive-mode#side-questions-with-%2Fbtw) sur la session actuelle sans l'ajouter à la conversation. Si vous exécutez `/btw` sans question, Claude Code affiche votre question secondaire la plus récente afin que vous puissiez parcourir les réponses antérieures ; si vous n'en avez pas encore posé une, Claude Code affiche une ligne d'utilisation. Avant la v2.1.212, `/btw` nécessitait une question |

67| `/bug [report]` | Signaler un bogue ou partager votre conversation. Vous choisissez la quantité d'historique de session à inclure et confirmez sur un écran de consentement avant que quoi que ce soit ne soit envoyé. Lorsque vous êtes connecté à Anthropic sur une connexion propriétaire, le rapport est envoyé à Anthropic ; sur un fournisseur tiers, ou sans identifiants Anthropic, Claude Code écrit le rapport dans une [archive locale sous `~/.claude/feedback-bundles/`](/docs/fr/data-usage#telemetry-services) que vous transmettez vous-même. Dans l'[extension VS Code](/docs/fr/vs-code#use-the-prompt-box), `/bug` ouvre plutôt la boîte de dialogue de retour de l'extension ; nécessite Claude Code v2.1.229 ou ultérieur. Lorsque vous l'exécutez pendant que Claude répond, Claude Code ouvre la boîte de dialogue immédiatement. Avant la v2.1.232, Claude Code mettait la commande en file d'attente jusqu'à la fin du tour. Alias : `/share`. Avant la v2.1.212, `/bug` et `/share` étaient des alias de `/feedback` |67| `/bug [report]` | Signaler un bogue ou partager votre conversation. Vous choisissez la quantité d'historique de session à inclure et confirmez sur un écran de consentement avant que quoi que ce soit ne soit envoyé. Lorsque vous êtes connecté à Anthropic sur une connexion propriétaire, le rapport est envoyé à Anthropic ; sur un fournisseur tiers, ou sans identifiants Anthropic, Claude Code écrit le rapport dans une [archive locale sous `~/.claude/feedback-bundles/`](/docs/fr/data-usage#telemetry-services) que vous transmettez vous-même. Dans l'[extension VS Code](/docs/fr/vs-code#use-the-prompt-box), `/bug` ouvre plutôt la boîte de dialogue de retour de l'extension ; nécessite Claude Code v2.1.229 ou ultérieur. Lorsque vous l'exécutez pendant que Claude répond, Claude Code ouvre la boîte de dialogue immédiatement. Avant la v2.1.232, Claude Code mettait la commande en file d'attente jusqu'à la fin du tour. Alias : `/share`. Avant la v2.1.212, `/bug` et `/share` étaient des alias de `/feedback` |

68| `/cd <path>` | Déplacer cette session vers un nouveau répertoire de travail, en conservant la conversation. Tapez un chemin partiel pour voir les suggestions de répertoires correspondants ; appuyez sur `Tab` pour en accepter un. Les suggestions nécessitent Claude Code v2.1.206 ou ultérieur. Pour ce que Claude Code applique à partir du nouveau répertoire dès que vous vous déplacez, et comment `/cd` diffère de `/add-dir`, consultez [Déplacer la session vers un autre répertoire](/docs/fr/permissions#move-the-session-to-another-directory) |68| `/cd <path>` | Déplacer cette session vers un nouveau répertoire de travail, en conservant la conversation. Tapez un chemin partiel pour voir les suggestions de répertoires correspondants ; appuyez sur `Tab` pour en accepter un. Les suggestions nécessitent Claude Code v2.1.206 ou ultérieur. Pour ce que Claude Code applique à partir du nouveau répertoire dès que vous vous déplacez, et comment `/cd` diffère de `/add-dir`, consultez [Déplacer la session vers un autre répertoire](/docs/fr/permissions#move-the-session-to-another-directory) |

69| `/chrome` | Configurer les paramètres de [Claude dans Chrome](/docs/fr/chrome) |69| `/chrome` | Configurer les paramètres de [Claude dans Chrome](/docs/fr/chrome) |

70| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb]` | **[Skill](/docs/fr/skills#bundled-skills).** Charger la documentation de référence de [Claude API](https://platform.claude.com/docs/en/api/overview) et [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) pour le langage de votre projet. S'active également automatiquement lorsque votre code importe `anthropic` ou `@anthropic-ai/sdk`. Exécutez `migrate` pour mettre à jour le code Claude API existant vers un modèle plus récent. Exécutez `upgrade` pour déplacer la dépendance du SDK Anthropic de votre projet sur une version majeure, actuellement le package Python `anthropic` de 0.x à 1.x. Exécutez `managed-agents-onboard` pour une procédure pas à pas qui crée un nouvel agent géré. Exécutez `prompt-audit` pour signaler les instructions écrites pour les anciens modèles dans vos invites, compétences et descriptions d'outils et proposer des corrections sous forme de diff. Exécutez `cost-optimize` pour profiler où va la dépense Claude API de votre projet et proposer des économies à partir d'options telles que la mise en cache des invites, la réduction des jetons d'entrée et de sortie inutiles, le traitement par lots, l'effort et le choix du modèle, un changement à la fois. Exécutez `build-eval` pour créer un ensemble d'évaluation pour votre application alimentée par Claude, et `hillclimb` pour améliorer itérativement l'application par rapport à une évaluation existante. La sous-commande `prompt-audit` nécessite Claude Code v2.1.221 ou ultérieur, `upgrade` nécessite la v2.1.236 ou ultérieur, `cost-optimize` nécessite la v2.1.247 ou ultérieur, et `build-eval` et `hillclimb` nécessitent la v2.1.259 ou ultérieur |70| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb]` | **[Skill](/docs/fr/skills#bundled-skills).** Charger la documentation de référence de [Claude API](https://platform.claude.com/docs/en/api/overview) et [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) pour le langage de votre projet. S'active également automatiquement lorsque votre code importe `anthropic` ou `@anthropic-ai/sdk`. Exécutez `migrate` pour mettre à jour le code Claude API existant vers un modèle plus récent. Exécutez `upgrade` pour déplacer la dépendance du SDK Anthropic de votre projet sur une version majeure, actuellement le package Python `anthropic` de 0.x à 1.x. Exécutez `managed-agents-onboard` pour une procédure pas à pas qui crée un nouvel agent géré. Exécutez `prompt-audit` pour signaler les instructions écrites pour les anciens modèles dans vos invites, compétences et descriptions d'outils et proposer des corrections sous forme de diff. Exécutez `cost-optimize` pour profiler où va la dépense Claude API de votre projet et proposer des économies à partir d'options telles que la mise en cache des invites, la réduction des jetons d'entrée et de sortie inutiles, le traitement par lots, l'effort et le choix du modèle, un changement à la fois. Exécutez `build-eval` pour créer un ensemble d'évaluation pour votre application alimentée par Claude, et `hillclimb` pour améliorer itérativement l'application par rapport à une évaluation existante. La sous-commande `prompt-audit` nécessite Claude Code v2.1.221 ou ultérieur, `upgrade` nécessite la v2.1.236 ou ultérieur, `cost-optimize` nécessite la v2.1.247 ou ultérieur, et `build-eval` et `hillclimb` nécessitent la v2.1.259 ou ultérieur |

71| `/clear [name]` | Démarrer une nouvelle conversation avec un contexte vide. Passez un nom pour étiqueter la conversation précédente dans le sélecteur `/resume`. Pour libérer du contexte tout en continuant la même conversation, utilisez `/compact` à la place. Reprendre la conversation précédente avec `/resume`, ou, dans le même processus Claude Code, la restaurer à partir de [l'entrée de session précédente du menu de rembobinage](/docs/fr/checkpointing#rewind-past-a-cleared-conversation). L'entrée de rembobinage nécessite Claude Code v2.1.191 ou ultérieur. Alias : `/reset`, `/new` |71| `/clear [name]` | Démarrer une nouvelle conversation avec un contexte vide. Passez un nom pour étiqueter la conversation précédente dans le sélecteur `/resume`. Pour libérer du contexte tout en continuant la même conversation, utilisez `/compact` à la place. Reprendre la conversation précédente avec `/resume`, ou, dans le même processus Claude Code, la restaurer à partir de [l'entrée de session précédente du menu de rembobinage](/docs/fr/checkpointing#rewind-past-a-cleared-conversation). Alias : `/reset`, `/new` |

72| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/fr/skills#bundled-skills).** Examiner le diff actuel, ou un numéro de demande de fusion, une branche ou un chemin que vous passez, pour les bogues de correction. Selon votre modèle et votre niveau d'effort, l'examen couvre également les opportunités de nettoyage. Passez `--fix` pour appliquer les résultats, `--comment` pour les publier en tant que commentaires GitHub PR ou GitLab merge request, ou `ultra` pour exécuter un [examen cloud](/docs/fr/ultrareview) approfondi. La publication sur une GitLab merge request nécessite Claude Code v2.1.257 ou ultérieur. Avec `ultra` sur une cible de demande de fusion `github.com`, passez `--post` pour présélectionner [la publication des résultats terminés à la demande de fusion](/docs/fr/ultrareview#post-findings-to-the-pull-request) dans la boîte de dialogue de lancement ; `--post` nécessite Claude Code v2.1.227 ou ultérieur. Consultez [Examiner un diff localement](/docs/fr/code-review#review-a-diff-locally) pour les niveaux d'effort, le ciblage et la relation avec `/simplify`. Alias : `/review` |72| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/fr/skills#bundled-skills).** Examiner le diff actuel, ou un numéro de demande de fusion, une branche ou un chemin que vous passez, pour les bogues de correction. Selon votre modèle et votre niveau d'effort, l'examen couvre également les opportunités de nettoyage. Passez `--fix` pour appliquer les résultats, `--comment` pour les publier en tant que commentaires GitHub PR ou GitLab merge request, ou `ultra` pour exécuter un [examen cloud](/docs/fr/ultrareview) approfondi. La publication sur une GitLab merge request nécessite Claude Code v2.1.257 ou ultérieur. Avec `ultra` sur une cible de demande de fusion `github.com`, passez `--post` pour présélectionner [la publication des résultats terminés à la demande de fusion](/docs/fr/ultrareview#post-findings-to-the-pull-request) dans la boîte de dialogue de lancement ; `--post` nécessite Claude Code v2.1.227 ou ultérieur. Consultez [Examiner un diff localement](/docs/fr/code-review#review-a-diff-locally) pour les niveaux d'effort, le ciblage et la relation avec `/simplify`. Alias : `/review` |

73| `/color [color\|default]` | Définir la couleur de la barre d'invite pour la session actuelle. Couleurs disponibles : `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Utilisez `default` pour réinitialiser, ou exécutez sans argument pour choisir une couleur aléatoire. Lorsque [Remote Control](/docs/fr/remote-control) est connecté, la couleur se synchronise avec claude.ai/code. Également disponible en mode non interactif (`-p`) ; nécessite Claude Code v2.1.205 ou ultérieur |73| `/color [color\|default]` | Définir la couleur de la barre d'invite pour la session actuelle. Couleurs disponibles : `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Utilisez `default` pour réinitialiser, ou exécutez sans argument pour choisir une couleur aléatoire. Lorsque [Remote Control](/docs/fr/remote-control) est connecté, la couleur se synchronise avec claude.ai/code. Également disponible en mode non interactif (`-p`) ; nécessite Claude Code v2.1.205 ou ultérieur |

74| `/compact [instructions]` | Libérer du contexte en résumant la conversation jusqu'à présent. Passez éventuellement des instructions de focus pour le résumé. Consultez [comment la compaction gère les règles, les compétences et les fichiers de mémoire](/docs/fr/context-window#what-survives-compaction) |74| `/compact [instructions]` | Libérer du contexte en résumant la conversation jusqu'à présent. Passez éventuellement des instructions de focus pour le résumé. Consultez [comment la compaction gère les règles, les compétences et les fichiers de mémoire](/docs/fr/context-window#what-survives-compaction) |


116| `/passes` | Partager une semaine gratuite de Claude Code avec des amis. Visible uniquement si votre compte est éligible |116| `/passes` | Partager une semaine gratuite de Claude Code avec des amis. Visible uniquement si votre compte est éligible |

117| `/permissions` | Gérer les règles d'autorisation, de demande et de refus pour les permissions d'outils. Ouvre une boîte de dialogue interactive où vous pouvez afficher les règles par portée, ajouter ou supprimer des règles, gérer les répertoires de travail, et examiner les [refus du mode auto récents](/docs/fr/auto-mode-config#review-denials). Vous pouvez également afficher et modifier les [règles du classificateur du mode auto](/docs/fr/auto-mode-config#edit-rules-from-permissions) à partir de l'onglet **Mode auto** de la boîte de dialogue. Lorsque vous l'exécutez pendant que Claude répond, Claude Code ouvre la boîte de dialogue immédiatement et applique vos modifications à partir de l'appel d'outil suivant de Claude dans le même tour. Avant la v2.1.234, Claude Code mettait la commande en file d'attente jusqu'à la fin du tour. Alias : `/allowed-tools` |117| `/permissions` | Gérer les règles d'autorisation, de demande et de refus pour les permissions d'outils. Ouvre une boîte de dialogue interactive où vous pouvez afficher les règles par portée, ajouter ou supprimer des règles, gérer les répertoires de travail, et examiner les [refus du mode auto récents](/docs/fr/auto-mode-config#review-denials). Vous pouvez également afficher et modifier les [règles du classificateur du mode auto](/docs/fr/auto-mode-config#edit-rules-from-permissions) à partir de l'onglet **Mode auto** de la boîte de dialogue. Lorsque vous l'exécutez pendant que Claude répond, Claude Code ouvre la boîte de dialogue immédiatement et applique vos modifications à partir de l'appel d'outil suivant de Claude dans le même tour. Avant la v2.1.234, Claude Code mettait la commande en file d'attente jusqu'à la fin du tour. Alias : `/allowed-tools` |

118| `/plan [description]` | Entrer directement en mode plan à partir de l'invite. Passez une description facultative pour entrer en mode plan et commencer immédiatement avec cette tâche, par exemple `/plan fix the auth bug` |118| `/plan [description]` | Entrer directement en mode plan à partir de l'invite. Passez une description facultative pour entrer en mode plan et commencer immédiatement avec cette tâche, par exemple `/plan fix the auth bug` |

119| `/plugin [subcommand]` | Gérer les [plugins](/docs/fr/plugins) de Claude Code. Exécutez sans argument pour ouvrir le menu des plugins, ou passez une sous-commande telle que `list`, `install`, `enable`, ou `disable` pour agir directement. Claude Code peut activer un plugin lors de l'installation ; le [résumé d'installation](/docs/fr/discover-plugins#install-plugins) vous indique s'il l'a fait ou s'il faut exécuter `/reload-plugins` |119| `/plugin [subcommand]` | Gérer les [plugins](/docs/fr/plugins/overview) de Claude Code. Exécutez sans argument pour ouvrir le menu des plugins, ou passez une sous-commande telle que `list`, `install`, `enable`, ou `disable` pour agir directement. Claude Code peut activer un plugin lors de l'installation ; le [résumé d'installation](/docs/fr/plugins/install#install-a-plugin) vous indique s'il l'a fait ou s'il faut exécuter `/reload-plugins` |

120| `/powerup` | Découvrir les fonctionnalités de Claude Code à travers des leçons interactives rapides avec des démos animées |120| `/powerup` | Découvrir les fonctionnalités de Claude Code à travers des leçons interactives rapides avec des démos animées |

121| `/pr-comments [PR]` | Supprimé dans la v2.1.91. Demandez à Claude directement d'afficher les commentaires de la demande de fusion à la place. Sur les versions antérieures, récupère et affiche les commentaires d'une demande de fusion GitHub ; détecte automatiquement la demande de fusion pour la branche actuelle, ou passez une URL ou un numéro de demande de fusion. Nécessite l'interface de ligne de commande `gh` |121| `/pr-comments [PR]` | Supprimé dans la v2.1.91. Demandez à Claude directement d'afficher les commentaires de la demande de fusion à la place. Sur les versions antérieures, récupère et affiche les commentaires d'une demande de fusion GitHub ; détecte automatiquement la demande de fusion pour la branche actuelle, ou passez une URL ou un numéro de demande de fusion. Nécessite l'interface de ligne de commande `gh` |

122| `/privacy-settings` | Afficher et mettre à jour vos paramètres de confidentialité. Disponible uniquement pour les abonnés aux plans Pro et Max |122| `/privacy-settings` | Afficher et mettre à jour vos paramètres de confidentialité. Disponible uniquement pour les abonnés aux plans Pro et Max |


124| `/rate-limit-options` | Afficher les façons de continuer à travailler lorsqu'une limite d'utilisation claude.ai bloque une demande : attendre et [continuer automatiquement lorsque la limite se réinitialise](/docs/fr/interactive-mode#wait-for-a-usage-limit-to-reset), ajouter des [crédits d'utilisation](/docs/fr/costs#add-usage-credits-to-your-subscription), ou mettre à niveau votre plan. Claude Code peut également ouvrir ce menu de lui-même lorsque vous atteignez une limite à votre propre terminal. Consultez [Désactiver la continuation automatique](/docs/fr/interactive-mode#turn-automatic-continue-off). Nécessite un abonnement claude.ai. N'apparaît pas dans le menu de commande ; tapez-le en entier. Les lignes d'attente et de continuation nécessitent Claude Code v2.1.234 ou ultérieur |124| `/rate-limit-options` | Afficher les façons de continuer à travailler lorsqu'une limite d'utilisation claude.ai bloque une demande : attendre et [continuer automatiquement lorsque la limite se réinitialise](/docs/fr/interactive-mode#wait-for-a-usage-limit-to-reset), ajouter des [crédits d'utilisation](/docs/fr/costs#add-usage-credits-to-your-subscription), ou mettre à niveau votre plan. Claude Code peut également ouvrir ce menu de lui-même lorsque vous atteignez une limite à votre propre terminal. Consultez [Désactiver la continuation automatique](/docs/fr/interactive-mode#turn-automatic-continue-off). Nécessite un abonnement claude.ai. N'apparaît pas dans le menu de commande ; tapez-le en entier. Les lignes d'attente et de continuation nécessitent Claude Code v2.1.234 ou ultérieur |

125| `/recap` | Générer un résumé d'une ligne de la session actuelle à la demande. Consultez [Récapitulatif de session](/docs/fr/interactive-mode#session-recap) pour le récapitulatif automatique qui apparaît après votre absence |125| `/recap` | Générer un résumé d'une ligne de la session actuelle à la demande. Consultez [Récapitulatif de session](/docs/fr/interactive-mode#session-recap) pour le récapitulatif automatique qui apparaît après votre absence |

126| `/release-notes` | Afficher le journal des modifications dans un sélecteur de version interactif. Sélectionnez une version spécifique pour voir ses notes de version, ou choisissez d'afficher toutes les versions. Les notes apparaissent dans votre transcription sans entrer dans la conversation que Claude voit |126| `/release-notes` | Afficher le journal des modifications dans un sélecteur de version interactif. Sélectionnez une version spécifique pour voir ses notes de version, ou choisissez d'afficher toutes les versions. Les notes apparaissent dans votre transcription sans entrer dans la conversation que Claude voit |

127| `/reload-plugins [--force]` | Recharger tous les [plugins](/docs/fr/plugins) actifs pour appliquer les modifications en attente sans redémarrer. Signale les décomptes pour chaque composant rechargé et signale les erreurs de chargement. Lorsque le rechargement changerait les outils MCP chargés et invaliderait le cache d'invite, la commande avertit et ignore sauf si vous passez `--force`. Également disponible en mode non interactif (`-p`), le SDK Agent et l'application de bureau, où il s'exécute uniquement sur l'entrée tapée directement dans la session et n'applique pas les modifications du serveur MCP du plugin ; nécessite Claude Code v2.1.260 ou ultérieur. Consultez [Appliquer les modifications du plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) |127| `/reload-plugins [--force]` | Recharger tous les [plugins](/docs/fr/plugins/overview) actifs pour appliquer les modifications en attente sans redémarrer. Signale les décomptes pour chaque composant rechargé et signale les erreurs de chargement. Lorsque le rechargement changerait les outils MCP chargés et invaliderait le cache d'invite, la commande avertit et ignore sauf si vous passez `--force`. Également disponible en mode non interactif (`-p`), le SDK Agent et l'application de bureau, où il s'exécute uniquement sur l'entrée tapée directement dans la session et n'applique pas les modifications du serveur MCP du plugin ; nécessite Claude Code v2.1.260 ou ultérieur. Consultez [Appliquer les modifications du plugin sans redémarrer](/docs/fr/plugins/cli-reference#reload-plugins) |

128| `/reload-skills` | Rescanner les répertoires de [compétence](/docs/fr/skills) et de commande afin que les compétences ajoutées ou modifiées sur le disque pendant la session deviennent disponibles sans redémarrer. Signale le nombre de compétences disponibles et le nombre ajouté ou supprimé |128| `/reload-skills` | Rescanner les répertoires de [compétence](/docs/fr/skills) et de commande afin que les compétences ajoutées ou modifiées sur le disque pendant la session deviennent disponibles sans redémarrer. Signale le nombre de compétences disponibles et le nombre ajouté ou supprimé |

129| `/remote-control` | Rendre cette session disponible pour [Remote Control](/docs/fr/remote-control) à partir de claude.ai. L'exécuter sans connexion affiche que Remote Control nécessite un abonnement claude.ai et vous indique comment vous connecter ; avant la v2.1.206, il signalait `Unknown command: /remote-control`. Alias : `/rc` |129| `/remote-control` | Rendre cette session disponible pour [Remote Control](/docs/fr/remote-control) à partir de claude.ai. L'exécuter sans connexion affiche que Remote Control nécessite un abonnement claude.ai et vous indique comment vous connecter ; avant la v2.1.206, il signalait `Unknown command: /remote-control`. Alias : `/rc` |

130| `/remote-env` | Choisir l'environnement cloud par défaut pour les sessions cloud que vous démarrez à partir de l'interface de ligne de commande. Consultez [Sélectionner un environnement à partir de l'interface de ligne de commande](/docs/fr/cloud-environments#select-an-environment-from-the-cli) |130| `/remote-env` | Choisir l'environnement cloud par défaut pour les sessions cloud que vous démarrez à partir de l'interface de ligne de commande. Consultez [Sélectionner un environnement à partir de l'interface de ligne de commande](/docs/fr/cloud-environments#select-an-environment-from-the-cli) |

Details

110 110 

111 * Soyez spécifique sur ce que vous recherchez111 * Soyez spécifique sur ce que vous recherchez

112 * Utilisez le langage du domaine du projet112 * Utilisez le langage du domaine du projet

113 * Installez un [plugin d'intelligence de code](/docs/fr/discover-plugins#code-intelligence) pour votre langage afin de donner à Claude une navigation précise ' aller à la définition ' et ' trouver les références '113 * Installez un [plugin d'intelligence de code](/docs/fr/plugins/code-intelligence) pour votre langage afin de donner à Claude une navigation précise « aller à la définition » et « trouver les références »

114</Tip>114</Tip>

115 115 

116***116***

costs.md +1 −1

Details

290 Installer des plugins d'intelligence de code pour les langages typés290 Installer des plugins d'intelligence de code pour les langages typés

291</h3>291</h3>

292 292 

293Les [plugins d'intelligence de code](/docs/fr/discover-plugins#code-intelligence) donnent à Claude une navigation de symboles précise au lieu d'une recherche basée sur le texte, réduisant les lectures de fichiers inutiles lors de l'exploration de code inconnu. Un seul appel « aller à la définition » remplace ce qui pourrait autrement être une recherche grep suivie de la lecture de plusieurs fichiers candidats. Les serveurs de langage installés signalent également automatiquement les erreurs de type après les modifications, donc Claude détecte les erreurs sans exécuter un compilateur.293Les [plugins d'intelligence de code](/docs/fr/plugins/code-intelligence) donnent à Claude une navigation de symboles précise au lieu d'une recherche basée sur le texte, réduisant les lectures de fichiers inutiles lors de l'exploration de code inconnu. Un seul appel « aller à la définition » remplace ce qui pourrait autrement être une recherche grep suivie de la lecture de plusieurs fichiers candidats. Les serveurs de langage installés signalent également automatiquement les erreurs de type après les modifications, donc Claude détecte les erreurs sans exécuter un compilateur.

294 294 

295<h3 id="offload-processing-to-hooks-and-skills">295<h3 id="offload-processing-to-hooks-and-skills">

296 Déléguer le traitement aux hooks et aux skills296 Déléguer le traitement aux hooks et aux skills

Details

109| Le hook ne se déclenche jamais | `matcher` est un tableau JSON au lieu d'une chaîne | Utilisez une chaîne unique avec `\|` pour correspondre à plusieurs outils, par exemple `"Edit\|Write"`. Consultez [matcher patterns](/docs/fr/hooks#matcher-patterns). |109| Le hook ne se déclenche jamais | `matcher` est un tableau JSON au lieu d'une chaîne | Utilisez une chaîne unique avec `\|` pour correspondre à plusieurs outils, par exemple `"Edit\|Write"`. Consultez [matcher patterns](/docs/fr/hooks#matcher-patterns). |

110| Le hook ne se déclenche jamais | `matcher` utilise `,` comme séparateur sur une version antérieure à v2.1.191 | Claude Code v2.1.191 ou version ultérieure traite `,` comme un séparateur de liste comme `\|`. Les versions antérieures évaluent une virgule comme un caractère littéral, donc `"Edit,Write"` ne correspond à rien. Utilisez `\|` à la place, ou mettez à jour Claude Code. |110| Le hook ne se déclenche jamais | `matcher` utilise `,` comme séparateur sur une version antérieure à v2.1.191 | Claude Code v2.1.191 ou version ultérieure traite `,` comme un séparateur de liste comme `\|`. Les versions antérieures évaluent une virgule comme un caractère littéral, donc `"Edit,Write"` ne correspond à rien. Utilisez `\|` à la place, ou mettez à jour Claude Code. |

111| Le hook ne se déclenche jamais | La valeur `matcher` est en minuscules, par exemple `"bash"` | La correspondance est sensible à la casse. Les noms d'outils sont en majuscules : `Bash`, `Edit`, `Write`, `Read`. |111| Le hook ne se déclenche jamais | La valeur `matcher` est en minuscules, par exemple `"bash"` | La correspondance est sensible à la casse. Les noms d'outils sont en majuscules : `Bash`, `Edit`, `Write`, `Read`. |

112| Le hook ne se déclenche jamais | Les hooks sont définis dans un fichier autonome au lieu de `settings.json` | Il n'y a pas de fichier hooks autonome pour la configuration du projet ou de l'utilisateur. Définissez les hooks sous la clé `"hooks"` dans `settings.json`. Seuls les [plugins](/docs/fr/plugins-reference#hooks) chargent un fichier `hooks/hooks.json` séparé. Consultez [hook configuration](/docs/fr/hooks). |112| Le hook ne se déclenche jamais | Les hooks sont définis dans un fichier autonome au lieu de `settings.json` | Il n'y a pas de fichier hooks autonome pour la configuration du projet ou de l'utilisateur. Définissez les hooks sous la clé `"hooks"` dans `settings.json`. Seuls les [plugins](/docs/fr/plugins/components#hooks) chargent un fichier `hooks/hooks.json` séparé. Consultez [hook configuration](/docs/fr/hooks). |

113| Les permissions, hooks ou env définis globalement sont ignorés | La configuration a été ajoutée à `~/.claude.json` | `~/.claude.json` contient l'état de l'application et les bascules d'interface utilisateur. `permissions`, `hooks` et `env` appartiennent à `~/.claude/settings.json`. Ce sont deux fichiers différents. |113| Les permissions, hooks ou env définis globalement sont ignorés | La configuration a été ajoutée à `~/.claude.json` | `~/.claude.json` contient l'état de l'application et les bascules d'interface utilisateur. `permissions`, `hooks` et `env` appartiennent à `~/.claude/settings.json`. Ce sont deux fichiers différents. |

114| Une valeur `settings.json` semble ignorée | La même clé est définie dans `settings.local.json` | `settings.local.json` remplace `settings.json`, et les deux remplacent `~/.claude/settings.json`. Consultez [settings precedence](/docs/fr/settings#settings-precedence). |114| Une valeur `settings.json` semble ignorée | La même clé est définie dans `settings.local.json` | `settings.local.json` remplace `settings.json`, et les deux remplacent `~/.claude/settings.json`. Consultez [settings precedence](/docs/fr/settings#settings-precedence). |

115| Le skill n'apparaît pas dans `/skills` | Le fichier skill est à `.claude/skills/name.md` au lieu d'être dans un dossier | Utilisez un dossier avec `SKILL.md` à l'intérieur : `.claude/skills/name/SKILL.md`. |115| Le skill n'apparaît pas dans `/skills` | Le fichier skill est à `.claude/skills/name.md` au lieu d'être dans un dossier | Utilisez un dossier avec `SKILL.md` à l'intérieur : `.claude/skills/name/SKILL.md`. |

desktop.md +6 −6

Details

472 472 

473Connectez les services externes, ajoutez des flux de travail réutilisables, personnalisez le comportement de Claude et configurez les serveurs d'aperçu. Pour gérer les connecteurs, les skills et les plugins au même endroit, cliquez sur **Personnaliser** dans la barre latérale. L'onglet [Cowork](https://claude.com/product/cowork) dans l'application de bureau récupère ses skills, plugins et connecteurs à partir de cette configuration Personnaliser, qui se synchronise via votre compte claude.ai, et non à partir du répertoire `~/.claude` de la CLI.473Connectez les services externes, ajoutez des flux de travail réutilisables, personnalisez le comportement de Claude et configurez les serveurs d'aperçu. Pour gérer les connecteurs, les skills et les plugins au même endroit, cliquez sur **Personnaliser** dans la barre latérale. L'onglet [Cowork](https://claude.com/product/cowork) dans l'application de bureau récupère ses skills, plugins et connecteurs à partir de cette configuration Personnaliser, qui se synchronise via votre compte claude.ai, et non à partir du répertoire `~/.claude` de la CLI.

474 474 

475Claude Code charge également les skills et les plugins activés pour votre compte claude.ai dans les sessions de terminal où vous vous connectez avec le même compte. Voir [Skills synchronisés à partir de claude.ai](/docs/fr/skills#how-synced-skills-behave) et [Plugins synchronisés à partir de claude.ai](/docs/fr/plugins-reference#synced-plugins).475Claude Code charge également les skills et les plugins activés pour votre compte claude.ai dans les sessions de terminal où vous vous connectez avec le même compte. Voir [Skills synchronisés à partir de claude.ai](/docs/fr/skills#how-synced-skills-behave) et [Plugins synchronisés à partir de claude.ai](/docs/fr/plugins/loading#synced-plugins).

476 476 

477<h3 id="connect-external-tools">477<h3 id="connect-external-tools">

478 Connecter les outils externes478 Connecter les outils externes


490 Utiliser les skills490 Utiliser les skills

491</h3>491</h3>

492 492 

493[Les skills](/docs/fr/skills) étendent ce que Claude peut faire. Claude les charge automatiquement quand ils sont pertinents, ou vous pouvez en invoquer un directement : tapez `/` dans la zone de prompt ou cliquez sur le bouton **+** et sélectionnez **Slash commands** pour parcourir ce qui est disponible. Ceci inclut [les commandes intégrées](/docs/fr/commands), vos [skills personnalisés](/docs/fr/skills#create-your-first-skill), les skills du projet à partir de votre base de code et les skills de tout [plugin installé](/docs/fr/plugins). Sélectionnez-en un et il apparaît en surbrillance dans le champ d'entrée. Tapez votre tâche après et envoyez comme d'habitude.493[Les skills](/docs/fr/skills) étendent ce que Claude peut faire. Claude les charge automatiquement quand ils sont pertinents, ou vous pouvez en invoquer un directement : tapez `/` dans la zone de prompt ou cliquez sur le bouton **+** et sélectionnez **Slash commands** pour parcourir ce qui est disponible. Ceci inclut [les commandes intégrées](/docs/fr/commands), vos [skills personnalisés](/docs/fr/skills#create-your-first-skill), les skills du projet à partir de votre base de code et les skills de tout [plugin installé](/docs/fr/plugins/install). Sélectionnez-en un et il apparaît en surbrillance dans le champ d'entrée. Tapez votre tâche après et envoyez comme d'habitude.

494 494 

495Vous pouvez envoyer une commande pendant que Claude travaille, de la même manière que tout autre message, et la session revient à l'inactivité une fois que le tour est terminé. Avant la v2.1.206, une commande envoyée en cours de tour pouvait laisser la session affichée comme en cours d'exécution et les messages que vous avez envoyés après n'étaient pas livrés.495Vous pouvez envoyer une commande pendant que Claude travaille, de la même manière que tout autre message, et la session revient à l'inactivité une fois que le tour est terminé. Avant la v2.1.206, une commande envoyée en cours de tour pouvait laisser la session affichée comme en cours d'exécution et les messages que vous avez envoyés après n'étaient pas livrés.

496 496 


502 Installer les plugins502 Installer les plugins

503</h3>503</h3>

504 504 

505[Les plugins](/docs/fr/plugins) sont des packages réutilisables qui ajoutent des skills, des agents, des hooks, des serveurs MCP et des configurations LSP à Claude Code. Vous pouvez installer les plugins à partir de l'application de bureau sans utiliser le terminal.505[Les plugins](/docs/fr/plugins/overview) sont des packages réutilisables qui ajoutent des skills, des agents, des hooks, des serveurs MCP et des configurations LSP à Claude Code. Vous pouvez installer les plugins à partir de l'application de bureau sans utiliser le terminal.

506 506 

507Pour les sessions locales et [SSH](#ssh-sessions), cliquez sur le bouton **+** à côté de la zone de prompt et sélectionnez **Plugins** pour voir vos plugins installés et leurs skills. Pour ajouter un plugin, sélectionnez **Ajouter un plugin** à partir du sous-menu pour ouvrir le navigateur de plugins, qui affiche les plugins disponibles à partir de vos [marketplaces](/docs/fr/plugin-marketplaces) configurés, y compris le marketplace officiel d'Anthropic. Sélectionnez **Gérer les plugins** pour activer, désactiver ou désinstaller les plugins.507Pour les sessions locales et [SSH](#ssh-sessions), cliquez sur le bouton **+** à côté de la zone de prompt et sélectionnez **Plugins** pour voir vos plugins installés et leurs skills. Pour ajouter un plugin, sélectionnez **Ajouter un plugin** à partir du sous-menu pour ouvrir le navigateur de plugins, qui affiche les plugins disponibles à partir de vos [marketplaces](/docs/fr/plugins/overview) configurés, y compris le marketplace officiel d'Anthropic. Sélectionnez **Gérer les plugins** pour activer, désactiver ou désinstaller les plugins.

508 508 

509Vous pouvez limiter les plugins à votre compte utilisateur, un projet spécifique ou local uniquement. Si votre organisation gère les plugins de manière centralisée, ces plugins sont disponibles dans les sessions de bureau de la même manière qu'ils le sont dans la CLI.509Vous pouvez limiter les plugins à votre compte utilisateur, un projet spécifique ou local uniquement. Si votre organisation gère les plugins de manière centralisée, ces plugins sont disponibles dans les sessions de bureau de la même manière qu'ils le sont dans la CLI.

510 510 

511Le navigateur de plugins n'est pas disponible dans les sessions cloud, et les plugins que vous installez à partir de l'application de bureau ne sont pas disponibles pour les sessions cloud. Une session cloud n'installe pas non plus les plugins que le fichier `.claude/settings.json` du référentiel déclare, comme [Ce qui est reporté de votre configuration](/docs/fr/cloud-environments#what-carries-over-from-your-setup) l'explique. Pour utiliser un plugin dans une session cloud, activez-le pour votre compte claude.ai pour que Claude Code le charge en tant que [plugin synchronisé](/docs/fr/plugins-reference#synced-plugins). Les plugins ne sont pas disponibles dans les sessions WSL. Pour la référence complète des plugins, y compris la création de vos propres plugins, voir [plugins](/docs/fr/plugins).511Le navigateur de plugins n'est pas disponible dans les sessions cloud, et les plugins que vous installez à partir de l'application de bureau ne sont pas disponibles pour les sessions cloud. Une session cloud n'installe pas non plus les plugins que le fichier `.claude/settings.json` du référentiel déclare, comme [Ce qui est reporté de votre configuration](/docs/fr/cloud-environments#what-carries-over-from-your-setup) l'explique. Les plugins ne sont pas disponibles dans les sessions WSL. Pour la référence complète des plugins, y compris la création de vos propres plugins, voir [plugins](/docs/fr/plugins/overview).

512 512 

513<h3 id="configure-preview-servers">513<h3 id="configure-preview-servers">

514 Configurer les serveurs d'aperçu514 Configurer les serveurs d'aperçu


1023| Modes de permission | Tous les modes y compris `dontAsk` | Manuel, Accepter les modifications, Plan et Auto. Le mode Contourner les permissions apparaît dans le sélecteur de mode une fois activé : via le bouton bascule Paramètres sur les plans Pro et Max, ou via la politique organisationnelle sur les plans Team et Enterprise |1023| Modes de permission | Tous les modes y compris `dontAsk` | Manuel, Accepter les modifications, Plan et Auto. Le mode Contourner les permissions apparaît dans le sélecteur de mode une fois activé : via le bouton bascule Paramètres sur les plans Pro et Max, ou via la politique organisationnelle sur les plans Team et Enterprise |

1024| [Fournisseurs tiers](/docs/fr/third-party-integrations) | Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry | API d'Anthropic par défaut. Pour le routage par passerelle, voir [connecter l'application de bureau à une passerelle](/docs/fr/llm-gateway-connect#desktop-app). Pour exécuter l'onglet Code sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ou une passerelle LLM auto-hébergée, voir [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview). |1024| [Fournisseurs tiers](/docs/fr/third-party-integrations) | Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry | API d'Anthropic par défaut. Pour le routage par passerelle, voir [connecter l'application de bureau à une passerelle](/docs/fr/llm-gateway-connect#desktop-app). Pour exécuter l'onglet Code sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry ou une passerelle LLM auto-hébergée, voir [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview). |

1025| [Serveurs MCP](/docs/fr/mcp) | Configurer dans les fichiers de paramètres | Interface utilisateur Connecteurs pour les sessions locales et SSH, ou fichiers de paramètres |1025| [Serveurs MCP](/docs/fr/mcp) | Configurer dans les fichiers de paramètres | Interface utilisateur Connecteurs pour les sessions locales et SSH, ou fichiers de paramètres |

1026| [Plugins](/docs/fr/plugins) | Commande `/plugin` | Interface utilisateur du gestionnaire de plugins |1026| [Plugins](/docs/fr/plugins/overview) | Commande `/plugin` | Interface utilisateur du gestionnaire de plugins |

1027| Fichiers @mention | Basé sur le texte | Avec autocomplétion ; sessions locales et SSH uniquement |1027| Fichiers @mention | Basé sur le texte | Avec autocomplétion ; sessions locales et SSH uniquement |

1028| Pièces jointes de fichiers | Non disponible | Images, PDF |1028| Pièces jointes de fichiers | Non disponible | Images, PDF |

1029| Isolation des sessions | Drapeau [`--worktree`](/docs/fr/cli-reference) | Option **worktree** au démarrage d'une session |1029| Isolation des sessions | Drapeau [`--worktree`](/docs/fr/cli-reference) | Option **worktree** au démarrage d'une session |

discover-plugins.md +0 −651 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Découvrir et installer des plugins prédéfinis via les marketplaces

6 

7> Trouvez et installez des plugins depuis les marketplaces pour étendre Claude Code avec de nouvelles compétences, agents et capacités.

8 

9Les plugins étendent Claude Code avec des skills, des agents, des hooks et des serveurs MCP. Les marketplaces de plugins sont des catalogues qui vous aident à découvrir et installer ces extensions sans les construire vous-même.

10 

11Vous pouvez également activer des plugins sur claude.ai, pour vous-même ou via votre organisation. Claude Code synchronise ceux-ci dans vos sessions sans installation via marketplace, comme le décrit [Plugins synchronisés depuis claude.ai](/docs/fr/plugins-reference#synced-plugins).

12 

13Vous cherchez à créer et distribuer votre propre marketplace ? Consultez [Créer et distribuer une marketplace de plugins](/docs/fr/plugin-marketplaces).

14 

15<h2 id="how-marketplaces-work">

16 Comment fonctionnent les marketplaces

17</h2>

18 

19Une marketplace est un catalogue de plugins que quelqu'un d'autre a créé et partagé. L'utilisation d'une marketplace est un processus en deux étapes :

20 

21<Steps>

22 <Step title="Ajouter la marketplace">

23 Cela enregistre le catalogue avec Claude Code pour que vous puissiez parcourir ce qui est disponible. Aucun plugin n'est installé pour le moment.

24 </Step>

25 

26 <Step title="Installer des plugins individuels">

27 Parcourez le catalogue et installez les plugins que vous souhaitez.

28 </Step>

29</Steps>

30 

31<h2 id="official-anthropic-marketplace">

32 Marketplace officielle Anthropic

33</h2>

34 

35Claude Code ajoute automatiquement la marketplace officielle Anthropic (`claude-plugins-official`) la première fois que vous le démarrez de manière interactive. Si Claude Code ne peut pas l'ajouter, par exemple parce que votre réseau bloque le téléchargement ou une [politique de marketplace](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) a bloqué une tentative antérieure, ajoutez-la vous-même avec `/plugin marketplace add anthropics/claude-plugins-official`.

36 

37Pour parcourir ce qui est disponible, exécutez `/plugin` et allez à l'onglet **Discover**, ou consultez le catalogue sur [claude.com/plugins](https://claude.com/plugins).

38 

39Pour installer un plugin depuis la marketplace officielle, utilisez `/plugin install <name>@claude-plugins-official`. Par exemple, pour installer l'intégration GitHub :

40 

41```shell theme={null}

42/plugin install github@claude-plugins-official

43```

44 

45`/plugin` ouvre un panneau interactif dans le CLI du terminal. Si Claude répond que `/plugin` n'est pas disponible dans cet environnement, installez le plugin d'une autre manière :

46 

47* **Application de bureau Claude** : utilisez le [navigateur de plugins](/docs/fr/desktop#install-plugins).

48* **Extension VS Code** : installez depuis la [boîte de dialogue **Manage plugins**](/docs/fr/vs-code#manage-plugins).

49* **Sessions cloud** : activez le plugin pour votre compte claude.ai afin que Claude Code le charge en tant que [plugin synchronisé](/docs/fr/plugins-reference#synced-plugins).

50 

51Si l'installation échoue, faites correspondre le message que Claude Code signale :

52 

53* `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

54* Le plugin est [non trouvé dans la marketplace](#install-plugins) : vérifiez le nom du plugin.

55 

56<Note>

57 La marketplace officielle est maintenue par Anthropic, et l'inclusion est à la discrétion d'Anthropic. Les formulaires de soumission intégrés à l'application ajoutent des plugins à la [marketplace communautaire](#community-marketplace), pas à la marketplace officielle. Pour distribuer des plugins indépendamment, [créez votre propre marketplace](/docs/fr/plugin-marketplaces) et partagez-la avec les utilisateurs.

58</Note>

59 

60La marketplace officielle inclut plusieurs catégories de plugins :

61 

62<h3 id="code-intelligence">

63 Code intelligence

64</h3>

65 

66Les plugins de code intelligence activent l'outil LSP intégré de Claude Code, donnant à Claude la capacité de sauter aux définitions, trouver les références et voir les erreurs de type immédiatement après les modifications. Ces plugins configurent les connexions [Language Server Protocol](https://microsoft.github.io/language-server-protocol/), la même technologie qui alimente la code intelligence de VS Code. Dans les [sessions cloud](/docs/fr/claude-code-on-the-web), Claude Code ne démarre pas les serveurs de langage des plugins, donc Claude n'obtient pas l'outil LSP là-bas.

67 

68Installez le binaire du serveur de langage du tableau ci-dessous avant d'utiliser ces plugins ; le plugin ne l'installe pas pour vous. Si vous avez déjà un serveur de langage installé, Claude peut vous inviter à installer le plugin correspondant quand vous ouvrez un projet.

69 

70| Langage | Plugin | Binaire requis |

71| :--------- | :------------------ | :--------------------------- |

72| C/C++ | `clangd-lsp` | `clangd` |

73| C# | `csharp-lsp` | `csharp-ls` |

74| Go | `gopls-lsp` | `gopls` |

75| Java | `jdtls-lsp` | `jdtls` |

76| Kotlin | `kotlin-lsp` | `kotlin-language-server` |

77| Lua | `lua-lsp` | `lua-language-server` |

78| PHP | `php-lsp` | `intelephense` |

79| Python | `pyright-lsp` | `pyright-langserver` |

80| Rust | `rust-analyzer-lsp` | `rust-analyzer` |

81| Swift | `swift-lsp` | `sourcekit-lsp` |

82| TypeScript | `typescript-lsp` | `typescript-language-server` |

83 

84Vous pouvez également [créer votre propre plugin LSP](/docs/fr/plugins-reference#lsp-servers) pour d'autres langages.

85 

86<Note>

87 Si vous voyez `Executable not found in $PATH` dans l'onglet Errors de `/plugin` après avoir installé un plugin, installez le binaire que le tableau [code intelligence](#code-intelligence) liste pour ce plugin.

88</Note>

89 

90<h4 id="what-claude-gains-from-code-intelligence-plugins">

91 Ce que Claude gagne des plugins de code intelligence

92</h4>

93 

94Une fois qu'un plugin de code intelligence est installé et que son binaire de serveur de langage est disponible, Claude gagne deux capacités :

95 

96* **Diagnostics automatiques** : après chaque modification de fichier que Claude effectue, le serveur de langage signale les erreurs et avertissements, donc Claude voit les erreurs de type, les imports manquants et les problèmes de syntaxe sans exécuter un compilateur ou un linter. Si Claude introduit une erreur, il la remarque et la corrige dans le même tour.

97* **Navigation de code** : Claude peut utiliser le serveur de langage pour sauter aux définitions, trouver les références, obtenir les informations de type au survol, lister les symboles, trouver les implémentations et tracer les hiérarchies d'appels. Ces opérations donnent à Claude une navigation plus précise que la recherche basée sur grep, bien que la disponibilité puisse varier selon le langage et l'environnement.

98 

99Vous n'avez pas besoin de configurer les diagnostics au-delà de l'installation du plugin. Pour les lire vous-même, appuyez sur **Ctrl+O** quand Claude Code affiche un indicateur tel que **Found 3 new diagnostic issues in 2 files**.

100 

101Si vous rencontrez des problèmes, consultez [Dépannage de la code intelligence](#code-intelligence-issues).

102 

103<h3 id="external-integrations">

104 Intégrations externes

105</h3>

106 

107Ces plugins regroupent des [serveurs MCP](/docs/fr/mcp) préconfigurés pour que vous puissiez connecter Claude à des services externes sans configuration manuelle :

108 

109* **Contrôle de source** : `github`, `gitlab`

110* **Gestion de projet** : `atlassian` (Jira/Confluence), `asana`, `linear`, `notion`

111* **Design** : `figma`

112* **Infrastructure** : `vercel`, `firebase`, `supabase`

113* **Communication** : `slack`

114* **Monitoring** : `sentry`

115 

116<h3 id="automatic-security-review">

117 Examen automatique de la sécurité

118</h3>

119 

120Le plugin `security-guidance` examine chaque modification que Claude effectue pour détecter les vulnérabilités courantes et instruit Claude de corriger ce qu'il trouve dans la même session. Consultez [Détecter les problèmes de sécurité pendant que Claude écrit du code](/docs/fr/security-guidance) pour voir ce qu'il vérifie et comment ajouter des règles spécifiques au projet.

121 

122<h3 id="development-workflows">

123 Workflows de développement

124</h3>

125 

126Plugins qui ajoutent des skills et des agents pour les tâches de développement courantes :

127 

128* **commit-commands** : Workflows de commit Git incluant commit, push et création de PR

129* **pr-review-toolkit** : Agents spécialisés pour examiner les pull requests

130* **agent-sdk-dev** : Outils pour construire avec le Claude Agent SDK

131* **plugin-dev** : Toolkit pour créer vos propres plugins

132 

133<h3 id="output-styles">

134 Styles de sortie

135</h3>

136 

137Personnalisez comment Claude répond :

138 

139* **explanatory-output-style** : Insights éducatifs sur les choix d'implémentation

140* **learning-output-style** : Mode d'apprentissage interactif pour la construction de compétences

141 

142<h2 id="community-marketplace">

143 Marketplace communautaire

144</h2>

145 

146La marketplace communautaire sur [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) héberge des plugins tiers qui ont réussi la validation automatisée d'Anthropic et le contrôle de sécurité. Chaque plugin est épinglé à un SHA de commit spécifique dans le catalogue. Contrairement à la marketplace officielle, vous l'ajoutez manuellement :

147 

148```shell theme={null}

149/plugin marketplace add anthropics/claude-plugins-community

150```

151 

152Ensuite, installez les plugins à partir de celle-ci en utilisant le nom de marketplace `claude-community` :

153 

154```shell theme={null}

155/plugin install <plugin-name>@claude-community

156```

157 

158Pour soumettre votre propre plugin à la marketplace communautaire, consultez [Soumettre votre plugin à la marketplace communautaire](/docs/fr/plugins#submit-your-plugin-to-the-community-marketplace) dans le guide de création de plugins.

159 

160<h2 id="try-it-add-the-demo-marketplace">

161 Essayez : ajouter la marketplace de démonstration

162</h2>

163 

164Anthropic maintient également une [marketplace de plugins de démonstration](https://github.com/anthropics/claude-code/tree/main/plugins) (`claude-code-plugins`) avec des plugins d'exemple qui montrent ce qui est possible avec le système de plugins. Contrairement à la marketplace officielle, vous devez ajouter celle-ci manuellement.

165 

166<Steps>

167 <Step title="Ajouter la marketplace">

168 Depuis Claude Code, exécutez la commande `plugin marketplace add` pour la marketplace `anthropics/claude-code` :

169 

170 ```shell theme={null}

171 /plugin marketplace add anthropics/claude-code

172 ```

173 

174 Cela télécharge le catalogue de la marketplace et rend ses plugins disponibles pour vous.

175 </Step>

176 

177 <Step title="Parcourir les plugins disponibles">

178 Exécutez `/plugin` pour ouvrir le gestionnaire de plugins. Cela ouvre une interface à onglets que vous pouvez parcourir en utilisant **Tab**, ou **Shift+Tab** pour aller en arrière :

179 

180 * **Discover** : parcourez les plugins disponibles de toutes vos marketplaces

181 * **Installed** : visualisez et gérez vos plugins installés

182 * **Marketplaces** : ajoutez, supprimez ou mettez à jour vos marketplaces ajoutées

183 * **Errors** : visualisez les erreurs de chargement de plugins

184 * **Stats** : consultez [ce que chacune de vos skills coûte en contexte et à quelle fréquence elle est utilisée](/docs/fr/skills#find-unused-skills), dans les sessions où `/skill-doctor` est disponible

185 

186 Allez à l'onglet **Discover** pour voir les plugins de la marketplace que vous venez d'ajouter. Lorsque votre administrateur a autorisé la marketplace via le paramètre géré [`pluginSuggestionMarketplaces`](/docs/fr/settings-reference#pluginsuggestionmarketplaces), les plugins marqués comme pertinents pour votre répertoire de travail actuel sont épinglés en haut avec une étiquette **suggested for this directory**.

187 </Step>

188 

189 <Step title="Installer un plugin">

190 Sélectionnez un plugin pour voir ses détails. Le volet de détails affiche ce que le plugin contient et ce qu'il coûte :

191 

192 * Une estimation du **Context cost** afin que vous puissiez voir combien de tokens le plugin ajoutera à votre [fenêtre de contexte](/docs/fr/features-overview#understand-context-costs) à chaque tour

193 * La date de **Last updated** du plugin

194 * Une section **Will install** listant les commandes, agents, skills, hooks et serveurs MCP et LSP du plugin, afin que vous puissiez examiner exactement ce qu'il ajoute avant l'installation

195 

196 Tous les plugins ne fournissent pas les données derrière ces champs. Pour les plugins provenant de marketplaces locales ou personnalisées, vous ne verrez peut-être pas les lignes **Context cost** et **Last updated**, et la section **Will install** peut afficher **Components will be discovered at installation** à la place.

197 

198 Choisissez une portée d'installation :

199 

200 * **User scope** : installez pour vous-même dans tous les projets

201 * **Project scope** : installez pour tous les collaborateurs sur ce référentiel

202 * **Local scope** : installez pour vous-même dans ce référentiel uniquement

203 

204 Par exemple, sélectionnez **commit-commands**, un plugin qui ajoute des skills de workflow git, et installez-le à votre portée utilisateur.

205 

206 Vous pouvez également démarrer l'installation depuis la ligne de commande :

207 

208 ```shell theme={null}

209 /plugin install commit-commands@claude-code-plugins

210 ```

211 

212 Consultez [Fichiers de configuration](/docs/fr/settings#where-settings-live) pour en savoir plus sur les portées.

213 </Step>

214 

215 <Step title="Utiliser votre nouveau plugin">

216 Si le résumé d'installation signale `Run /reload-plugins to activate.`, Claude Code exécute ensuite ce rechargement pour vous. Si le rechargement avertit que votre prochain message relira la conversation, exécutez `/reload-plugins --force` pour activer le plugin.

217 

218 Les skills de plugin sont espacés par le nom du plugin, donc **commit-commands** fournit des skills comme `/commit-commands:commit`.

219 

220 Essayez en effectuant une modification à un fichier et en exécutant :

221 

222 ```shell theme={null}

223 /commit-commands:commit

224 ```

225 

226 Cela prépare vos modifications, génère un message de commit et crée le commit.

227 

228 Chaque plugin fonctionne différemment. Consultez les détails du plugin dans l'onglet **Discover** pour voir les commandes et skills qu'il fournit, ou visitez sa page d'accueil pour obtenir des conseils d'utilisation.

229 </Step>

230</Steps>

231 

232<h2 id="add-marketplaces">

233 Ajouter des marketplaces

234</h2>

235 

236Utilisez la commande `/plugin marketplace add` pour ajouter des marketplaces de différentes sources.

237 

238<Tip>

239 **Raccourcis** : Vous pouvez utiliser `/plugin market` au lieu de `/plugin marketplace`, et `rm` au lieu de `remove`.

240</Tip>

241 

242* **Référentiels GitHub** : format `owner/repo` (par exemple, `anthropics/claude-code`)

243* **URLs Git** : n'importe quelle URL de référentiel git, y compris GitLab, Bitbucket et les serveurs auto-hébergés

244* **Chemins locaux** : répertoires ou chemins directs vers les fichiers `marketplace.json`

245* **URLs distantes** : URLs directs vers les fichiers `marketplace.json` hébergés

246* **claude.ai** : marketplaces hébergées sur claude.ai pour votre compte, comme la bibliothèque de plugins de votre organisation, que vous [ajoutez par nom depuis l'onglet **Marketplaces** ou votre shell](#add-from-claude-ai) plutôt que par source

247 

248<h3 id="add-from-github">

249 Ajouter depuis GitHub

250</h3>

251 

252Ajoutez un référentiel GitHub qui contient un fichier `.claude-plugin/marketplace.json` en utilisant le format `owner/repo`, où `owner` est le nom d'utilisateur ou l'organisation GitHub et `repo` est le nom du référentiel.

253 

254Par exemple, `anthropics/claude-code` fait référence au référentiel `claude-code` appartenant à `anthropics` :

255 

256```shell theme={null}

257/plugin marketplace add anthropics/claude-code

258```

259 

260<h3 id="add-from-other-git-hosts">

261 Ajouter depuis d'autres hôtes Git

262</h3>

263 

264Ajoutez un référentiel git marketplace en fournissant son URL complète. Pour une URL `https://`, l'inclusion du suffixe `.git` dépend de l'hôte :

265 

266* **`github.com` et `gitlab.com`** : Claude Code reconnaît une URL de référentiel avec ou sans le suffixe `.git` et la clone. L'ajout d'une URL `gitlab.com` sans le suffixe nécessite Claude Code v2.1.232 ou ultérieur. Avant v2.1.232, Claude Code la traitait comme un lien direct vers un fichier `marketplace.json` hébergé.

267* **Azure DevOps** : omettez le suffixe. Claude Code clone n'importe quelle URL dont le chemin contient `/_git/`. Si vous ajoutez `.git` à un chemin `/_git/`, le clonage échoue.

268* **Tous les autres hôtes, y compris les serveurs GitLab auto-gérés** : incluez le suffixe `.git` pour que Claude Code clone le référentiel plutôt que de traiter l'URL comme un lien direct vers un fichier `marketplace.json` hébergé. Pour un hôte dont les URLs de clonage ne portent pas le suffixe, comme AWS CodeCommit, ajoutez la marketplace en tant qu'entrée git dans [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces). Claude Code clone une entrée git que son URL se termine ou non par `.git`.

269 

270Claude Code clone également une URL `gitlab.com` avec des sous-groupes imbriqués, comme `https://gitlab.com/group/subgroup/project`.

271 

272Incluez le préfixe `https://`. Claude Code v2.1.196 et versions ultérieures rejettent un hôte saisi sans celui-ci, tel que `gitlab.com/company/plugins.git`, comme un raccourci `owner/repo` GitHub invalide, et l'erreur vous indique d'ajouter le préfixe. Les versions antérieures l'ont mal interprété comme un chemin de référentiel GitHub et échouent au moment du clonage.

273 

274Utilisation de HTTPS :

275 

276```shell theme={null}

277/plugin marketplace add https://gitlab.com/company/plugins.git

278```

279 

280Utilisation de SSH :

281 

282```shell theme={null}

283/plugin marketplace add git@gitlab.com:company/plugins.git

284```

285 

286Claude Code clone une adresse SSH que celle-ci se termine ou non par `.git`.

287 

288Pour ajouter une branche ou un tag spécifique, ajoutez `#` suivi de la ref :

289 

290```shell theme={null}

291/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0

292```

293 

294<h3 id="add-from-local-paths">

295 Ajouter depuis des chemins locaux

296</h3>

297 

298Ajoutez un répertoire local qui contient un fichier `.claude-plugin/marketplace.json` :

299 

300```shell theme={null}

301/plugin marketplace add ./my-marketplace

302```

303 

304Vous pouvez également ajouter un chemin direct vers un fichier `marketplace.json` :

305 

306```shell theme={null}

307/plugin marketplace add ./path/to/marketplace.json

308```

309 

310<h3 id="add-from-remote-urls">

311 Ajouter depuis des URLs distantes

312</h3>

313 

314Ajoutez un fichier `marketplace.json` distant via URL :

315 

316```shell theme={null}

317/plugin marketplace add https://example.com/marketplace.json

318```

319 

320<Note>

321 Les marketplaces basées sur URL ont certaines limitations par rapport aux marketplaces basées sur Git. Si les installations de plugins à partir d'une marketplace basée sur URL échouent, consultez [Dépannage](/docs/fr/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

322</Note>

323 

324<h3 id="add-from-claude-ai">

325 Ajouter depuis claude.ai

326</h3>

327 

328Dans les sessions de terminal où [les plugins se synchronisent depuis votre compte claude.ai](/docs/fr/plugins-reference#synced-plugins), claude.ai peut également lister les marketplaces pour vous, comme la bibliothèque de plugins de votre organisation et vos uploads claude.ai. `claude plugin marketplace list` les affiche dans une section `From claude.ai:`, et l'onglet **Marketplaces** du `/plugin` les liste. Sélectionnez-en un pour l'ajouter. L'ajout d'une marketplace depuis claude.ai nécessite Claude Code v2.1.273 ou ultérieur.

329 

330Pour en ajouter une depuis votre shell, exécutez `claude plugin marketplace add` avec le flag `--claudeai` et le nom affiché dans la liste :

331 

332```bash theme={null}

333claude plugin marketplace add --claudeai claudeai-organization-library

334```

335 

336Claude Code enregistre la marketplace sous un nom local qui commence par `claudeai-`, dérivé du nom sous lequel claude.ai la liste : une marketplace listée comme « Organization library » s'enregistre comme `claudeai-organization-library`. Installez ses plugins par ce nom, par exemple avec `claude plugin install <plugin>@claudeai-organization-library`.

337 

338Si vous vous déconnectez ou vous connectez avec un compte différent, la marketplace reste configurée mais n'affiche aucun plugin, et les plugins que vous avez déjà installés à partir de celle-ci continuent de se charger.

339 

340La section `From claude.ai:` peut également lister les marketplaces basées sur git partagées via claude.ai. Vous les ajoutez avec la commande `marketplace add` ordinaire, en utilisant la source que la liste affiche.

341 

342<h2 id="install-plugins">

343 Installer des plugins

344</h2>

345 

346Une fois que vous avez ajouté des marketplaces, vous pouvez installer un plugin par nom. Pour une marketplace que vous n'avez pas encore ajoutée, vous pouvez plutôt [l'ajouter et l'installer en une seule commande](#add-a-marketplace-and-install-in-one-command).

347 

348Pour installer par nom :

349 

350```shell theme={null}

351/plugin install plugin-name@marketplace-name

352```

353 

354La commande ouvre les détails de ce plugin, où vous choisissez une [portée d'installation](/docs/fr/settings#where-settings-live). Vous voyez les mêmes choix lorsque vous exécutez `/plugin`, allez à l'onglet **Discover** et appuyez sur **Entrée** sur un plugin :

355 

356* **User scope** : installez pour vous-même dans tous les projets

357* **Project scope** : installez pour tous les collaborateurs sur ce référentiel, ce qui ajoute le plugin à `.claude/settings.json`

358* **Local scope** : installez pour vous-même dans ce référentiel uniquement, non partagé avec les collaborateurs

359 

360Pour installer sans étape interactive, utilisez la commande shell [`claude plugin install`](/docs/fr/plugins-reference#plugin-install), qui s'installe à la portée utilisateur sauf si vous passez `--scope`. Pour un plugin avec une [source `command`](/docs/fr/plugin-marketplaces#how-users-accept-the-command), passez `--yes` pour accepter la commande qu'il affiche.

361 

362Vous pouvez également voir des plugins avec la portée **managed**. Ceux-ci sont installés par les administrateurs via [managed settings](/docs/fr/managed-settings) et ne peuvent pas être modifiés.

363 

364Claude Code recherche le plugin dans sa copie locale du catalogue de marketplace. La façon dont vous nommez le plugin contrôle si Claude Code actualise d'abord cette copie :

365 

366* **Avec un nom de marketplace** : lorsque vous installez `plugin-name@marketplace-name`, dans une session ou avec `claude plugin install`, Claude Code actualise cette marketplace avant la recherche. Claude Code exécute l'actualisation même si vous avez désactivé [auto-update](#configure-auto-updates) pour la marketplace ou défini `DISABLE_AUTOUPDATER`. Avant la v2.1.232, Claude Code n'actualisait pas la marketplace avant la recherche. Claude Code ignore cette actualisation lorsque :

367 * La marketplace n'a pas été [ajoutée depuis GitHub, un autre hôte Git, une URL distante](#add-marketplaces), ou [claude.ai](#add-from-claude-ai).

368 * Un [répertoire seed](/docs/fr/plugin-marketplaces#pre-populate-plugins-for-containers) fournit la marketplace.

369 * Claude Code a actualisé la marketplace au cours des 30 dernières secondes.

370 * Vous avez défini [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars).

371 * [Managed settings](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) bloquent la marketplace, auquel cas Claude Code refuse également l'installation.

372* **Nom du plugin uniquement** : lorsque vous exécutez `/plugin install plugin-name` dans une session, Claude Code actualise uniquement les marketplaces qu'il [met à jour en arrière-plan](#configure-auto-updates), et uniquement après l'échec de la recherche. Lorsque vous exécutez `claude plugin install plugin-name`, Claude Code lit les catalogues en cache sans actualiser. Pour installer un plugin qui a été publié après votre dernière actualisation, exécutez `/plugin marketplace update <marketplace-name>` dans une session ou [`claude plugin marketplace update <marketplace-name>`](/docs/fr/plugin-marketplaces#plugin-marketplace-update) dans votre shell, puis réessayez l'installation.

373 

374Si l'actualisation avant une installation nommée échoue, par exemple parce que vous êtes hors ligne, Claude Code recherche le plugin dans le catalogue en cache de toute façon. `claude plugin install` signale `marketplace not refreshed` dans son message de succès, et `/plugin install` affiche l'échec au-dessus des détails du plugin ou dans son message non trouvé.

375 

376Lorsque vous installez à partir de l'interface `/plugin`, le résumé d'installation vous indique si le plugin est actif dans votre session actuelle :

377 

378* `Plugin is now active.` : Claude Code a activé le plugin dans le cadre de l'installation.

379* `Run /reload-plugins to activate.` : le plugin n'est pas encore actif, car l'activer [invaliderait le cache de prompt](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin) ou parce que la tentative d'activation a échoué. Claude Code exécute ensuite `/reload-plugins` pour vous. Si ce rechargement avertit à propos du cache de prompt, exécutez `/reload-plugins --force` pour [activer le plugin de toute façon](#apply-plugin-changes-without-restarting).

380* Si le plugin ne se charge pas, le résumé signale l'échec et l'onglet **Errors** de `/plugin` affiche le détail.

381 

382Avant la v2.1.221, aucune installation n'a pris effet dans la session actuelle jusqu'à ce que vous exécutiez `/reload-plugins` ou redémarriez.

383 

384La commande shell `claude plugin install` ne s'exécute pas dans une session, donc Claude Code charge les plugins qu'il installe la prochaine fois que vous démarrez Claude Code, ou lorsque vous exécutez `/reload-plugins` dans une session déjà ouverte.

385 

386<Warning>

387 Assurez-vous de faire confiance à un plugin avant de l'installer. Anthropic ne contrôle pas quels serveurs MCP, fichiers ou autres logiciels sont inclus dans les plugins et ne peut pas vérifier qu'ils fonctionnent comme prévu. Consultez la page d'accueil de chaque plugin pour plus d'informations.

388</Warning>

389 

390<h3 id="add-a-marketplace-and-install-in-one-command">

391 Ajouter une marketplace et installer en une seule commande

392</h3>

393 

394Pour installer un plugin à partir d'une marketplace que vous n'avez pas encore ajoutée, nommez la source de la marketplace avec `--marketplace`. Nécessite Claude Code v2.1.275 ou version ultérieure.

395 

396```shell theme={null}

397/plugin install quality-review-plugin --marketplace your-org/plugins

398```

399 

400La source prend [les mêmes formes que `/plugin marketplace add`](#add-marketplaces), telles que GitHub `owner/repo`, une URL git ou un chemin local, sauf qu'elle ne peut pas contenir d'espaces. Donnez le nom du plugin nu, sans suffixe `@marketplace`.

401 

402Claude Code affiche la source qu'il a résolue et vous demande de confirmer avant d'ajouter la marketplace. Refuser annule l'installation et n'ajoute rien. Une fois la marketplace ajoutée, les détails du plugin s'ouvrent et vous choisissez une [portée d'installation](/docs/fr/settings#where-settings-live). Si la source correspond à une marketplace que vous avez déjà ajoutée, Claude Code ignore la confirmation et ouvre les détails du plugin dans cette marketplace.

403 

404<h2 id="manage-installed-plugins">

405 Gérer les plugins installés

406</h2>

407 

408Exécutez `/plugin` et allez à l'onglet **Installed** pour visualiser, activer, désactiver ou désinstaller vos plugins. La liste est groupée par portée et triée pour que vous voyiez d'abord les problèmes : les plugins avec des erreurs de chargement ou des dépendances non résolues apparaissent en haut, suivis de vos favoris, avec les plugins désactivés repliés derrière un en-tête réduit en bas.

409 

410Depuis la liste, vous pouvez :

411 

412* appuyer sur `f` pour ajouter ou retirer le plugin sélectionné de vos favoris

413* taper pour filtrer par nom ou description du plugin

414* appuyer sur Enter pour ouvrir la vue détaillée d'un plugin et l'activer, le désactiver ou le désinstaller

415 

416Claude Code répertorie également les [plugins synchronisés depuis votre compte claude.ai](/docs/fr/plugins-reference#synced-plugins) dans l'onglet **Installed**, avec `synced` comme source. Vous pouvez en activer ou désactiver un sauf si votre organisation l'a marqué comme obligatoire. Pour en supprimer un, désactivez-le sur claude.ai. Les plugins synchronisés apparaissent dans les sessions de terminal sur Claude Code v2.1.273 ou ultérieur.

417 

418Quand vous désinstallez un plugin qu'un `.claude/settings.json` de projet active, Claude Code vous demande quelle portée vous visez : le désactiver pour vous seul, ce qui écrit une substitution dans votre `.claude/settings.local.json` et laisse le plugin installé pour le projet, ou le désinstaller pour tout le monde, ce qui le supprime du `.claude/settings.json` partagé.

419 

420La vue détaillée affiche les composants que le plugin contribue : commandes, skills, agents, hooks, serveurs MCP et serveurs LSP. Le même inventaire est disponible depuis la ligne de commande avec `claude plugin details`.

421 

422Claude Code répertorie également les plugins de marketplace que vous avez installés vous-même mais que vous n'avez pas utilisés depuis au moins deux semaines, sur une période d'au moins 10 sessions, sous un en-tête **Not used recently** dans l'onglet **Installed**. La vue détaillée affiche une ligne **Last used** pour chaque plugin. Utilisez ces informations pour trouver les plugins qui ajoutent toujours un coût de démarrage et de contexte même si vous ne les utilisez plus, puis désactivez-les ou désinstallez-les.

423 

424Deux types de plugins ne sont jamais listés comme inutilisés :

425 

426* les plugins que votre organisation gère ou que vous chargez avec `--plugin-dir`

427* les plugins qui contribuent un thème, un style de sortie, un moniteur ou un workflow, car ils fournissent de la valeur sans une invocation à suivre

428 

429L'en-tête **Not used recently** et la ligne **Last used** sont tous deux masqués quand votre organisation restreint les marketplaces avec [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces).

430 

431Un [serveur de langage](/docs/fr/plugins#add-lsp-servers-to-your-plugin) d'un plugin compte comme utilisé quand il fournit des diagnostics ou répond à une demande de navigation de code, donc un plugin LSP dont le serveur est actif dans vos sessions n'est pas listé comme inutilisé. Avant v2.1.203, l'activité du serveur de langage ne pouvait pas être comptée comme une utilisation, donc les plugins qui contribuent un serveur LSP étaient exemptés du groupe entièrement, de la même manière que les plugins de thème et de style de sortie le sont toujours.

432 

433La première session sur une version qui compte l'activité du serveur de langage réinitialise également l'enregistrement d'utilisation de chaque plugin LSP qui n'avait pas encore enregistré d'utilisation, donc Claude Code ne juge pas un plugin que vous avez installé plus tôt comme inutilisé en fonction des données enregistrées avant que l'activité de son serveur soit suivie.

434 

435Quand vous installez un plugin qui déclare des dépendances, la sortie d'installation liste quelles dépendances ont été auto-installées avec lui.

436 

437Vous pouvez également gérer les plugins avec des commandes directes :

438 

439* Quand vous exécutez `/plugin disable`, `/plugin enable` ou `/plugin uninstall`, Claude Code ouvre le panneau de plugins pour appliquer la modification et le laisse ouvert. Appuyez sur **Esc** pour fermer le panneau avant de taper une autre commande. [Appliquer les modifications de plugin sans redémarrer](#apply-plugin-changes-without-restarting) décrit quand la modification prend effet dans votre session.

440* Pour les scripts, utilisez plutôt les commandes shell `claude plugin`, qui n'ouvrent pas le panneau.

441 

442Lister les plugins installés sans ouvrir le menu :

443 

444```shell theme={null}

445/plugin list

446```

447 

448Passez `--enabled` ou `--disabled` pour afficher uniquement les plugins dans cet état.

449 

450Désactiver un plugin sans le désinstaller :

451 

452```shell theme={null}

453/plugin disable plugin-name@marketplace-name

454```

455 

456Réactiver un plugin désactivé :

457 

458```shell theme={null}

459/plugin enable plugin-name@marketplace-name

460```

461 

462Dans ces identifiants, `plugin-name` est le `name` du plugin dans l'[entrée de marketplace](/docs/fr/plugin-marketplaces#plugin-entries), qui peut différer du `name` dans le propre `plugin.json` du plugin.

463 

464À partir de Claude Code v2.1.195, **Enable** et **Disable** dans l'interface `/plugin` fonctionnent pour les plugins dont les deux noms diffèrent, et `/plugin enable` et `/plugin disable` acceptent l'un ou l'autre nom. Quand vous désactivez un tel plugin dans une version antérieure, Claude Code signale `already disabled` et le laisse activé.

465 

466Supprimer complètement un plugin :

467 

468```shell theme={null}

469/plugin uninstall plugin-name@marketplace-name

470```

471 

472L'option `--scope` vous permet de cibler une portée spécifique avec les commandes CLI :

473 

474```shell theme={null}

475claude plugin install formatter@your-org --scope project

476claude plugin uninstall formatter@your-org --scope project

477```

478 

479<h3 id="apply-plugin-changes-without-restarting">

480 Appliquer les modifications de plugin sans redémarrer

481</h3>

482 

483Quand vous fermez le menu `/plugin`, Claude Code exécute `/reload-plugins` pour vous pour appliquer les modifications que vous avez apportées, telles que l'installation, l'activation, la désactivation et la désinstallation de plugins. Si le rechargement invaliderait le [cache de prompt](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin), il avertit et laisse les modifications en attente à la place ; exécutez `/reload-plugins --force` pour les appliquer quand même. Si Claude répond toujours quand vous fermez le menu, le rechargement s'exécute après la fin de la réponse.

484 

485Pour les modifications de plugin qui se produisent en dehors du menu, exécutez `/reload-plugins` vous-même. Ces modifications incluent :

486 

487* Une commande `claude plugin` que vous avez exécutée dans un autre terminal

488* Les modifications d'un plugin que vous avez chargé avec [`--plugin-dir`](/docs/fr/plugins#test-your-plugins-locally) pendant que vous le développez

489* Une [mise à jour automatique](#configure-auto-updates) de plugin dont la notification vous demande de recharger

490* Une [synchronisation depuis votre compte claude.ai](/docs/fr/plugins-reference#synced-plugins) qui a ajouté, mis à jour ou supprimé un plugin et a affiché une notification vous demandant de recharger

491* Un changement dans un dossier [`--plugin-dir`](/docs/fr/plugins#test-your-plugins-locally) que Claude Code a retenu parce que l'appliquer invaliderait le cache de prompt

492 

493Avant v2.1.268, les plugins que vous avez activés, désactivés ou désinstallés dans le menu, et les installations qui ne se sont pas activées pendant l'installation, restaient en attente jusqu'à ce que vous exécutiez `/reload-plugins`.

494 

495`/reload-plugins` s'exécute également dans les sessions sans terminal interactif, telles que l'application de bureau, le SDK Agent et le [mode non interactif](/docs/fr/headless) avec `-p`. Nécessite Claude Code v2.1.260 ou ultérieur. Deux limites s'appliquent dans ces sessions :

496 

497* La commande s'exécute uniquement quand vous la tapez directement dans la session, par exemple dans l'invite `-p` ou la boîte d'invite de l'application de bureau. Quand vous l'envoyez plutôt via une connexion distante, telle que [Contrôle à distance](/docs/fr/remote-control) ou un message de chat relayé, la commande refuse sans recharger quoi que ce soit.

498* Le rechargement ne connecte ni ne déconnecte les serveurs MCP de plugin. Ces modifications prennent effet dans votre prochaine session.

499 

500Claude Code recharge tous les plugins actifs et affiche les comptages pour les plugins, les skills, les agents, les hooks, les serveurs MCP de plugin et les serveurs LSP de plugin, en omettant le comptage du serveur MCP de plugin dans une session sans terminal interactif. Dans le comptage des skills, Claude Code inclut chaque skill qu'un plugin fournit : à la fois ses entrées `commands/` et ses skills `SKILL.md`. Avant v2.1.246, Claude Code comptait uniquement les entrées `commands/`, donc il pouvait recharger les skills `SKILL.md` d'un plugin et signaler quand même `0 skills` dans le résumé.

501 

502Le rechargement a un coût en jetons sur la demande suivante : les composants nouvellement chargés s'annoncent dans le contenu ajouté à la conversation, tandis que l'historique existant lit toujours à partir du cache de prompt. Un plugin qui fournit des serveurs MCP coûte plus cher quand ses outils ne sont pas différés par [recherche d'outils](/docs/fr/mcp#scale-with-mcp-tool-search) : le changement invalide le cache et la demande suivante relit l'intégralité de la conversation. Consultez [activation ou désactivation d'un plugin](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin) pour plus de détails.

503 

504<h2 id="manage-marketplaces">

505 Gérer les marketplaces

506</h2>

507 

508Vous pouvez gérer les marketplaces via l'interface interactive `/plugin` ou avec des commandes CLI.

509 

510<h3 id="use-the-interactive-interface">

511 Utiliser l'interface interactive

512</h3>

513 

514Exécutez `/plugin` et allez à l'onglet **Marketplaces** pour :

515 

516* Visualiser toutes vos marketplaces ajoutées avec leurs sources et statut

517* Ajouter de nouvelles marketplaces

518* Mettre à jour les listes de marketplace pour récupérer les derniers plugins

519* Supprimer les marketplaces dont vous n'avez plus besoin

520 

521<h3 id="use-cli-commands">

522 Utiliser les commandes CLI

523</h3>

524 

525Vous pouvez également gérer les marketplaces avec des commandes directes.

526 

527Lister toutes les marketplaces configurées :

528 

529```shell theme={null}

530/plugin marketplace list

531```

532 

533Actualiser les listes de plugins d'une marketplace :

534 

535```shell theme={null}

536/plugin marketplace update marketplace-name

537```

538 

539Supprimer une marketplace :

540 

541```shell theme={null}

542/plugin marketplace remove marketplace-name

543```

544 

545<Warning>

546 La suppression d'une marketplace désinstallera tous les plugins que vous avez installés à partir de celle-ci.

547</Warning>

548 

549<h3 id="configure-auto-updates">

550 Configurer les mises à jour automatiques

551</h3>

552 

553Claude Code peut automatiquement mettre à jour les marketplaces et leurs plugins installés en arrière-plan après le démarrage. Quand la mise à jour automatique est activée pour une marketplace, Claude Code actualise les données de la marketplace et met à jour les plugins installés vers leurs dernières versions sur le disque.

554 

555Claude Code vérifie les mises à jour de marketplace et de plugins après le démarrage de votre session, avec un délai aléatoire pouvant aller jusqu'à dix minutes, de sorte que la session en cours continue d'utiliser les versions qu'elle a chargées au lancement. Si des plugins ont été mis à jour, vous verrez une notification vous invitant à exécuter `/reload-plugins`, ou les nouvelles versions se chargeront au prochain lancement.

556 

557La mise à jour automatique exclut également un plugin dont l'entrée de marketplace déclare un `headersHelper` : Claude Code [n'exécute ni la commande ni télécharge l'archive](/docs/fr/plugin-marketplaces#installs-and-updates-that-refuse-the-command-instead-of-asking) sur ce chemin ; cette section indique quand Claude Code liste le plugin dans l'onglet Erreurs de `/plugin` afin que vous puissiez le mettre à jour depuis sa propre vue.

558 

559Claude Code met à jour les plugins qui ont une [source `command`](/docs/fr/plugin-marketplaces#command-sources) selon un calendrier distinct du paramètre de mise à jour automatique de la marketplace et de `DISABLE_AUTOUPDATER`. À la place, il [réexécute la commande une fois par session](/docs/fr/plugin-marketplaces#when-claude-code-re-runs-the-command) et installe la sortie comme une nouvelle version de plugin quand son [hash](/docs/fr/plugins-reference#version-management) a changé.

560 

561Basculez la mise à jour automatique pour les marketplaces individuelles via l'interface utilisateur :

562 

5631. Exécutez `/plugin` pour ouvrir le gestionnaire de plugins

5642. Sélectionnez **Marketplaces**

5653. Choisissez une marketplace dans la liste

5664. Sélectionnez **Enable auto-update** ou **Disable auto-update**

567 

568`claude-plugins-official`, la plupart des autres marketplaces officielles Anthropic, et [les marketplaces ajoutées depuis claude.ai](#add-from-claude-ai) ont la mise à jour automatique activée par défaut. Les marketplaces tierces et de développement local ont la mise à jour automatique désactivée par défaut.

569 

570Les administrateurs peuvent également définir `"autoUpdate": true` sur chaque entrée [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) dans les paramètres gérés pour activer la mise à jour automatique pour une marketplace d'organisation sans exiger que chaque utilisateur la bascule.

571 

572Pour désactiver les mises à jour automatiques pour Claude Code et pour les plugins récupérés à partir des marketplaces, définissez la variable d'environnement `DISABLE_AUTOUPDATER`. Les plugins avec une [source `command`](/docs/fr/plugin-marketplaces#command-sources) suivent leur propre résolve une fois par session. Consultez [Auto updates](/docs/fr/setup#auto-updates) pour plus de détails.

573 

574Pour garder les mises à jour automatiques des plugins activées tout en désactivant les mises à jour automatiques de Claude Code, définissez `FORCE_AUTOUPDATE_PLUGINS=1` avec `DISABLE_AUTOUPDATER` :

575 

576```bash theme={null}

577export DISABLE_AUTOUPDATER=1

578export FORCE_AUTOUPDATE_PLUGINS=1

579```

580 

581<h2 id="configure-team-marketplaces">

582 Configurer les marketplaces d'équipe

583</h2>

584 

585Les administrateurs d'équipe peuvent configurer l'installation automatique de marketplace pour les projets en ajoutant la configuration de marketplace à `.claude/settings.json`. Une fois qu'un membre de l'équipe [fait confiance au dossier du référentiel](/docs/fr/permissions#what-runs-before-you-trust-a-folder), Claude Code ajoute ces marketplaces sans invite supplémentaire.

586 

587À partir de Claude Code v2.1.195, l'ajout de la marketplace n'installe pas les plugins provenant d'une source externe, sur tout chemin qui charge des plugins. Un plugin que seul le `.claude/settings.json` du projet active, et qui provient d'une source externe telle qu'un référentiel GitHub ou un package npm, ne se charge pas tant que le membre de l'équipe ne l'installe pas. Jusqu'à ce moment, Claude Code signale le plugin comme non installé et affiche la commande `claude plugin install` à exécuter.

588 

589Ajoutez `extraKnownMarketplaces` au `.claude/settings.json` de votre projet :

590 

591```json theme={null}

592{

593 "extraKnownMarketplaces": {

594 "my-team-tools": {

595 "source": {

596 "source": "github",

597 "repo": "your-org/claude-plugins"

598 }

599 }

600 }

601}

602```

603 

604Pour les options de configuration complètes incluant `extraKnownMarketplaces` et `enabledPlugins`, consultez [Plugin settings](/docs/fr/settings-reference#plugin-settings).

605 

606<h2 id="security">

607 Sécurité

608</h2>

609 

610Les plugins et les marketplaces sont des composants hautement fiables qui peuvent exécuter du code arbitraire sur votre machine avec vos privilèges utilisateur. Installez uniquement les plugins et ajoutez les marketplaces à partir de sources auxquelles vous faites confiance. Les organisations peuvent restreindre quelles marketplaces les utilisateurs sont autorisés à ajouter en utilisant [managed marketplace restrictions](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions).

611 

612<h2 id="troubleshooting">

613 Dépannage

614</h2>

615 

616<h3 id="/plugin-command-not-recognized">

617 Commande /plugin non reconnue

618</h3>

619 

620Si vous voyez « unknown command » ou la commande `/plugin` n'apparaît pas :

621 

6221. **Vérifiez votre version** : Exécutez `claude --version` pour voir ce qui est installé.

6232. **Mettez à jour Claude Code** :

624 * **Homebrew** : `brew upgrade claude-code`, ou `brew upgrade claude-code@latest` si vous avez installé ce cask

625 * **npm** : `npm install -g @anthropic-ai/claude-code@latest`

626 * **Native installer** : Réexécutez la commande d'installation depuis [Setup](/docs/fr/setup)

6273. **Redémarrez Claude Code** : Après la mise à jour, redémarrez votre terminal et exécutez `claude` à nouveau.

628 

629<h3 id="common-issues">

630 Problèmes courants

631</h3>

632 

633Si les skills du plugin n'apparaissent pas, effacez le cache avec `rm -rf ~/.claude/plugins/cache`, redémarrez Claude Code et réinstallez le plugin.

634 

635Pour un dépannage détaillé avec des solutions, consultez [Dépannage](/docs/fr/plugin-marketplaces#troubleshooting) dans le guide de la marketplace. Pour les outils de débogage, consultez [Debugging and development tools](/docs/fr/plugins-reference#debugging-and-development-tools).

636 

637<h3 id="code-intelligence-issues">

638 Problèmes de code intelligence

639</h3>

640 

641* **Le serveur de langage ne démarre pas** : Vérifiez que le binaire est installé et disponible dans votre `$PATH`. Consultez l'onglet Errors de `/plugin` pour plus de détails.

642* **Utilisation élevée de la mémoire** : Les serveurs de langage comme `rust-analyzer` et `pyright` peuvent consommer une mémoire importante sur les grands projets. Si vous rencontrez des problèmes de mémoire, désactivez le plugin avec `/plugin disable <plugin-name>` et fiez-vous aux outils de recherche intégrés de Claude à la place.

643* **Diagnostics faux positifs dans les monorepos** : Les serveurs de langage peuvent signaler des erreurs d'import non résolues pour les packages internes si l'espace de travail n'est pas configuré correctement. Ceux-ci n'affectent pas la capacité de Claude à modifier le code.

644 

645<h2 id="next-steps">

646 Prochaines étapes

647</h2>

648 

649* **Construisez vos propres plugins** : Consultez [Plugins](/docs/fr/plugins) pour créer des skills, des agents et des hooks

650* **Créez une marketplace** : Consultez [Créer une marketplace de plugins](/docs/fr/plugin-marketplaces) pour distribuer des plugins à votre équipe ou communauté

651* **Référence technique** : Consultez [Plugins reference](/docs/fr/plugins-reference) pour les spécifications complètes

env-vars.md +1 −1

Details

223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Lorsque `CLAUDE_AUTO_BACKGROUND_TASKS` est activé, secondes entre les rappels à Claude de vérifier les [sous-agents d'arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) qui sont toujours en cours d'exécution. Accepte un entier simple de `1` à `86400` uniquement ; toute autre valeur ou orthographe se lit comme non définie. Lorsqu'il n'est pas défini, il n'y a pas de rappels de vérification. Nécessite Claude Code v2.1.248 ou ultérieur |223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Lorsque `CLAUDE_AUTO_BACKGROUND_TASKS` est activé, secondes entre les rappels à Claude de vérifier les [sous-agents d'arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) qui sont toujours en cours d'exécution. Accepte un entier simple de `1` à `86400` uniquement ; toute autre valeur ou orthographe se lit comme non définie. Lorsqu'il n'est pas défini, il n'y a pas de rappels de vérification. Nécessite Claude Code v2.1.248 ou ultérieur |

224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Définissez la [fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window) en jetons, de `100000` à `1000000`. Accepte un entier simple comme `500000` uniquement : une valeur comme `500k` se lit comme `500` et se limite au minimum de 100K. La fenêtre effective est également limitée à la fenêtre de contexte du modèle. Prend la priorité sur la commande `/autocompact`, le drapeau `--autocompact` et le paramètre `autoCompactWindow`. Le `used_percentage` de la ligne d'état mesure toujours par rapport à la fenêtre de contexte complète du modèle, donc une fois cette variable définie, ce pourcentage n'indique plus quand la compaction s'exécutera |224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Définissez la [fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window) en jetons, de `100000` à `1000000`. Accepte un entier simple comme `500000` uniquement : une valeur comme `500k` se lit comme `500` et se limite au minimum de 100K. La fenêtre effective est également limitée à la fenêtre de contexte du modèle. Prend la priorité sur la commande `/autocompact`, le drapeau `--autocompact` et le paramètre `autoCompactWindow`. Le `used_percentage` de la ligne d'état mesure toujours par rapport à la fenêtre de contexte complète du modèle, donc une fois cette variable définie, ce pourcentage n'indique plus quand la compaction s'exécutera |

225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Remplacez la [connexion IDE](/docs/fr/vs-code) automatique. Par défaut, Claude Code se connecte automatiquement lorsqu'il est lancé dans le terminal intégré d'un IDE pris en charge. Définissez sur `false` pour empêcher cela. Définissez sur `true` pour forcer une tentative de connexion lorsque la détection automatique échoue, par exemple lorsque tmux obscurcit le terminal parent. Prend la priorité sur le paramètre de configuration global [`autoConnectIde`](/docs/fr/settings-reference#autoconnectide) |225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Remplacez la [connexion IDE](/docs/fr/vs-code) automatique. Par défaut, Claude Code se connecte automatiquement lorsqu'il est lancé dans le terminal intégré d'un IDE pris en charge. Définissez sur `false` pour empêcher cela. Définissez sur `true` pour forcer une tentative de connexion lorsque la détection automatique échoue, par exemple lorsque tmux obscurcit le terminal parent. Prend la priorité sur le paramètre de configuration global [`autoConnectIde`](/docs/fr/settings-reference#autoconnectide) |

226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Contrôle si Claude Code demande au serveur d'[examiner les actions du mode auto](/docs/fr/permission-modes#server-side-classifier-review). Lorsqu'il n'est pas défini, Claude Code demande au serveur sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et Claude Platform on AWS, et lorsque vous pointez `ANTHROPIC_BASE_URL` vers une passerelle LLM ou un proxy. Définissez sur `0` pour utiliser les requêtes du classificateur propre de Claude Code à la place. Non lu sur une connexion directe à l'API Anthropic. Nécessite Claude Code v2.1.271 ou ultérieur ; demander au serveur par défaut nécessite v2.1.278 ou ultérieur |226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Contrôle si Claude Code demande au serveur d'[examiner les actions du mode auto](/docs/fr/permission-modes#server-side-classifier-review). Définissez sur `0` pour utiliser les requêtes du classificateur propre de Claude Code à la place. Sur une connexion directe à l'API Anthropic, nécessite v2.1.281 ou ultérieur. La section liée énumère les sessions qui demandent au serveur lorsque la variable n'est pas définie, et à partir de quelle version. Nécessite Claude Code v2.1.271 ou ultérieur |

227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Temps en millisecondes que Claude Code attend que le fournisseur d'identifiants par défaut AWS produise des identifiants avant que la requête échoue avec [`AWS default-chain credential resolve timed out`](/docs/fr/errors#aws-default-chain-credential-resolve-timed-out) (par défaut : `60000`). Augmentez-le lorsqu'une étape de votre chaîne a légitimement besoin de plus de temps, comme une connexion SSO basée sur un navigateur avec MFA via un wrapper comme `aws-vault`. S'applique partout où Claude Code signe avec la chaîne par défaut : [Amazon Bedrock](/docs/fr/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) et le [point de terminaison Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint). Nécessite Claude Code v2.1.207 ou ultérieur |227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Temps en millisecondes que Claude Code attend que le fournisseur d'identifiants par défaut AWS produise des identifiants avant que la requête échoue avec [`AWS default-chain credential resolve timed out`](/docs/fr/errors#aws-default-chain-credential-resolve-timed-out) (par défaut : `60000`). Augmentez-le lorsqu'une étape de votre chaîne a légitimement besoin de plus de temps, comme une connexion SSO basée sur un navigateur avec MFA via un wrapper comme `aws-vault`. S'applique partout où Claude Code signe avec la chaîne par défaut : [Amazon Bedrock](/docs/fr/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) et le [point de terminaison Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint). Nécessite Claude Code v2.1.207 ou ultérieur |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Définissez sur `0` pour désactiver le [diff des fichiers qu'une commande Bash a modifiés](/docs/fr/hooks#bash), ou `1` pour l'enregistrer dans chaque mode de permission. Prend la priorité sur le paramètre [`bashEditDiffEnabled`](/docs/fr/settings-reference#basheditdiffenabled). Nécessite Claude Code v2.1.269 ou ultérieur |228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Définissez sur `0` pour désactiver le [diff des fichiers qu'une commande Bash a modifiés](/docs/fr/hooks#bash), ou `1` pour l'enregistrer dans chaque mode de permission. Prend la priorité sur le paramètre [`bashEditDiffEnabled`](/docs/fr/settings-reference#basheditdiffenabled). Nécessite Claude Code v2.1.269 ou ultérieur |

229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Définissez sur `0` pour faire en sorte qu'une session non interactive signale un statut inactif à son hôte à chaque fin de tour, même si le travail d'arrière-plan est toujours en cours. Par défaut, la session continue de signaler un statut en cours au-delà de la fin du tour tandis que le travail d'arrière-plan, comme un agent d'arrière-plan ou une exécution de [flux de travail](/docs/fr/workflows), est toujours actif. Cela empêche un hôte qui surveille le statut, comme une liste de sessions distantes, d'annoncer que Claude attend votre entrée au milieu du travail. Les commandes shell d'arrière-plan, comme un serveur de développement, ne maintiennent pas le statut en cours. La valeur par défaut en cours et l'opt-out `0` nécessitent Claude Code v2.1.269 ou ultérieur ; sur les versions antérieures, définissez `1` pour maintenir le statut en cours |229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Définissez sur `0` pour faire en sorte qu'une session non interactive signale un statut inactif à son hôte à chaque fin de tour, même si le travail d'arrière-plan est toujours en cours. Par défaut, la session continue de signaler un statut en cours au-delà de la fin du tour tandis que le travail d'arrière-plan, comme un agent d'arrière-plan ou une exécution de [flux de travail](/docs/fr/workflows), est toujours actif. Cela empêche un hôte qui surveille le statut, comme une liste de sessions distantes, d'annoncer que Claude attend votre entrée au milieu du travail. Les commandes shell d'arrière-plan, comme un serveur de développement, ne maintiennent pas le statut en cours. La valeur par défaut en cours et l'opt-out `0` nécessitent Claude Code v2.1.269 ou ultérieur ; sur les versions antérieures, définissez `1` pour maintenir le statut en cours |

errors.md +147 −18

Details

6 6 

7> Consultez les messages d'erreur d'exécution de Claude Code avec leur signification et comment les corriger.7> Consultez les messages d'erreur d'exécution de Claude Code avec leur signification et comment les corriger.

8 8 

9Cette page répertorie les erreurs d'exécution que Claude Code affiche et comment récupérer de chacune d'elles, ainsi que ce qu'il faut vérifier lorsque les réponses semblent incorrectes sans erreur. Pour les erreurs d'installation telles que `command not found` ou les défaillances TLS lors de la configuration, consultez [Dépannage de l'installation et de la connexion](/docs/fr/troubleshoot-install).9Cette page répertorie les erreurs d'exécution que Claude Code affiche et comment récupérer de chacune d'elles, plus ce qu'il faut vérifier lorsque les réponses semblent incorrectes sans erreur. Pour les erreurs d'installation telles que `command not found` ou les défaillances TLS lors de la configuration, consultez [Dépannage de l'installation et de la connexion](/docs/fr/troubleshoot-install).

10 10 

11À l'exception des [erreurs de wrapper et d'IDE](#wrapper-and-ide-errors), que le programme de lancement imprime plutôt que Claude Code lui-même, ces erreurs et commandes de récupération s'appliquent sur l'ensemble de l'interface CLI, de l'[application de bureau](/docs/fr/desktop) et des [sessions cloud](/docs/fr/claude-code-on-the-web), car les trois encapsulent le même CLI Claude Code. Pour les autres problèmes spécifiques à la surface, consultez la section dépannage sur la page de cette surface.11À l'exception des [erreurs de wrapper et d'IDE](#wrapper-and-ide-errors), que le programme de lancement imprime plutôt que Claude Code lui-même, ces erreurs et commandes de récupération s'appliquent sur l'ensemble de l'interface CLI, de l'[application Desktop](/docs/fr/desktop) et des [sessions cloud](/docs/fr/claude-code-on-the-web), car les trois encapsulent le même CLI Claude Code. Pour les autres problèmes spécifiques à la surface, consultez la section dépannage sur la page de cette surface.

12 12 

13<Note>13<Note>

14 Claude Code appelle l'API Claude pour les réponses du modèle, donc la plupart des erreurs d'exécution correspondent à un code d'erreur API sous-jacent. Cette page couvre ce que chaque erreur signifie dans Claude Code et comment récupérer. Pour les définitions brutes du code de statut HTTP, consultez la [référence des erreurs de la plateforme Claude](https://platform.claude.com/docs/en/api/errors).14 Claude Code appelle l'API Claude pour les réponses du modèle, donc la plupart des erreurs d'exécution correspondent à un code d'erreur API sous-jacent. Cette page couvre ce que chaque erreur signifie dans Claude Code et comment récupérer. Pour les définitions brutes du code de statut HTTP, consultez la [référence des erreurs de la plateforme Claude](https://platform.claude.com/docs/en/api/errors).


36| `Auto mode could not evaluate this action and is blocking it for safety` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |36| `Auto mode could not evaluate this action and is blocking it for safety` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |

37| `Auto mode classifier transcript exceeded context window` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |37| `Auto mode classifier transcript exceeded context window` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |

38| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |38| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Erreurs serveur](#auto-mode-cannot-determine-the-safety-of-an-action) |

39| `The server-side auto mode classifier gave no verdict` | [Erreurs serveur](#the-server-returned-no-safety-verdict) |

40| `Auto mode is unavailable — the server returned no safety verdict for the last 10 responses` | [Erreurs serveur](#the-server-returned-no-safety-verdict) |

39| `Agent terminated early due to an API error` | [Erreurs serveur](#agent-terminated-early-due-to-an-api-error) |41| `Agent terminated early due to an API error` | [Erreurs serveur](#agent-terminated-early-due-to-an-api-error) |

40| `You've hit your session limit` / `You've hit your weekly limit` / `You've hit your Opus limit` / `You've hit your Sonnet limit` | [Limites d'utilisation](#youve-hit-your-session-limit) |42| `You've hit your session limit` / `You've hit your weekly limit` / `You've hit your Opus limit` / `You've hit your Sonnet limit` | [Limites d'utilisation](#youve-hit-your-session-limit) |

41| `Usage credits required for 1M context` | [Limites d'utilisation](#usage-credits-required-for-1m-context) |43| `Usage credits required for 1M context` | [Limites d'utilisation](#usage-credits-required-for-1m-context) |


154| `API Error: 400 orphaned tool_result in conversation history` | [Erreurs de requête](#tool-use-or-thinking-block-mismatch) |156| `API Error: 400 orphaned tool_result in conversation history` | [Erreurs de requête](#tool-use-or-thinking-block-mismatch) |

155| `API Error: 400 duplicate tool_use ID in conversation history` | [Erreurs de requête](#tool-use-or-thinking-block-mismatch) |157| `API Error: 400 duplicate tool_use ID in conversation history` | [Erreurs de requête](#tool-use-or-thinking-block-mismatch) |

156| `[Unsupported tool content removed]` | [Erreurs de requête](#unsupported-tool-content-removed) |158| `[Unsupported tool content removed]` | [Erreurs de requête](#unsupported-tool-content-removed) |

159| `role 'system' must precede an 'assistant' message` | [Erreurs de requête](#role-system-must-precede-an-assistant-message) |

160| `Invalid encrypted_content in search_result block` / `Invalid encrypted_index in text block` / `Failed to decrypt web search result content` | [Erreurs de requête](#invalid-encrypted-content-in-search-result-block) |

157| `server_tool_use.name: Input should be` on every turn of a resumed session | [Erreurs de requête](#unsupported-tool-content-removed) |161| `server_tool_use.name: Input should be` on every turn of a resumed session | [Erreurs de requête](#unsupported-tool-content-removed) |

158| `<model> can't help with this. Start a new session to continue` | [Erreurs de requête](#usage-policy-refusal) |162| `<model> can't help with this. Start a new session to continue` | [Erreurs de requête](#usage-policy-refusal) |

159| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Erreurs de requête](#usage-policy-refusal) |163| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Erreurs de requête](#usage-policy-refusal) |


171| `Error: Invalid --agents configuration:` | [Erreurs de ligne de commande](#invalid-agents-configuration) |175| `Error: Invalid --agents configuration:` | [Erreurs de ligne de commande](#invalid-agents-configuration) |

172| `Error: Settings file exceeds the 2MiB limit` | [Erreurs de ligne de commande](#settings-file-exceeds-the-2mib-limit) |176| `Error: Settings file exceeds the 2MiB limit` | [Erreurs de ligne de commande](#settings-file-exceeds-the-2mib-limit) |

173| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Erreurs de ligne de commande](#the-current-directory-no-longer-exists) |177| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Erreurs de ligne de commande](#the-current-directory-no-longer-exists) |

178| `Temp directory <dir> ... Refusing to use it` / `ENOSPC: no space left on device, mkdir '<dir>'` | [Erreurs de ligne de commande](#temp-directory-refused-or-cannot-be-created) |

174| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Erreurs de ligne de commande](#directory-couldnt-be-resolved-to-a-real-location) |179| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Erreurs de ligne de commande](#directory-couldnt-be-resolved-to-a-real-location) |

175| `Error: Workspace not trusted` when starting Remote Control | [Erreurs de ligne de commande](#workspace-not-trusted-when-starting-remote-control) |180| `Error: Workspace not trusted` when starting Remote Control | [Erreurs de ligne de commande](#workspace-not-trusted-when-starting-remote-control) |

176| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Erreurs de ligne de commande](#not-carried-over-to-the-sessions-remote-control-starts) |181| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Erreurs de ligne de commande](#not-carried-over-to-the-sessions-remote-control-starts) |


214| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Erreurs de plugin](#plugin-eval-is-currently-in-early-access) |219| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Erreurs de plugin](#plugin-eval-is-currently-in-early-access) |

215| `Marketplace "<name>" is registered from an untrusted source` | [Erreurs de plugin](#marketplace-is-registered-from-an-untrusted-source) |220| `Marketplace "<name>" is registered from an untrusted source` | [Erreurs de plugin](#marketplace-is-registered-from-an-untrusted-source) |

216| `Marketplace "<name>" is already added from a different source` | [Erreurs de plugin](#marketplace-is-already-added-from-a-different-source) |221| `Marketplace "<name>" is already added from a different source` | [Erreurs de plugin](#marketplace-is-already-added-from-a-different-source) |

222| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Erreurs de plugin](#marketplace-name-is-another-spelling-of-a-reserved-name) |

217| `references ${user_config.*} in a shell-form command` | [Erreurs de plugin](#plugin-command-references-user-config) |223| `references ${user_config.*} in a shell-form command` | [Erreurs de plugin](#plugin-command-references-user-config) |

218| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Erreurs de plugin](#plugin-command-references-user-config) |224| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Erreurs de plugin](#plugin-command-references-user-config) |

219| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Erreurs de plugin](#plugin-command-references-user-config) |225| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Erreurs de plugin](#plugin-command-references-user-config) |


566* Dans une session interactive, approuvez ou refusez l'action dans l'invite qui apparaît572* Dans une session interactive, approuvez ou refusez l'action dans l'invite qui apparaît

567* Dans une session interactive, exécutez `/compact` pour réduire la taille de la conversation afin que les actions suivantes s'adaptent à nouveau à la fenêtre du classificateur573* Dans une session interactive, exécutez `/compact` pour réduire la taille de la conversation afin que les actions suivantes s'adaptent à nouveau à la fenêtre du classificateur

568 574 

575<h3 id="the-server-returned-no-safety-verdict">

576 Le serveur n'a retourné aucun verdict de sécurité

577</h3>

578 

579Sous [examen du classificateur côté serveur](/docs/fr/permission-modes#server-side-classifier-review), le mode auto refuse une action quand le serveur ne donne aucun verdict pour elle. Le refus nomme une catégorie entre parenthèses quand Claude Code peut en déterminer une, comme `(timed out)` :

580 

581```text theme={null}

582The server-side auto mode classifier gave no verdict (timed out), so auto mode cannot determine the safety of <tool>.

583```

584 

585Le reste du message dit à Claude si une tentative peut aider. Avant certains de ces refus, Claude Code attend afin que la tentative suivante de Claude ne suive pas immédiatement. Pendant l'attente dans une session interactive, le spinner affiche `Auto mode check unavailable` avec un compte à rebours, et appuyer sur `Esc` interrompt le tour.

586 

587Après dix réponses de suite sans verdict, le mode auto arrête le tour :

588 

589```text theme={null}

590Auto mode is unavailable — the server returned no safety verdict for the last 10 responses, so Claude stopped. Send a message to try again, or switch out of auto mode.

591```

592 

593Le message d'arrêt apparaît à un endroit différent dans chaque type de session :

594 

595* Dans une session interactive, le message apparaît comme un avertissement dans la transcription et le tour se termine

596* Dans une exécution `-p` [non-interactive](/docs/fr/headless), l'exécution se termine et signale une erreur d'exécution. Avec la sortie texte par défaut, le message s'imprime sur stderr.

597* Quand un [sous-agent](/docs/fr/sub-agents) a atteint la limite, le sous-agent s'arrête avant de terminer, et Claude reçoit ce qu'il a produit avec une note que le mode auto l'a arrêté

598 

599**Que faire :**

600 

601* Envoyez un autre message pour que Claude réessaie. Le compte de réponses recommence.

602* Si l'arrêt se répète et que vos demandes passent par une [passerelle LLM ou un proxy](/docs/fr/llm-gateway), vérifiez s'il coupe les réponses de streaming ou les réécrit. [L'examen du classificateur côté serveur](/docs/fr/permission-modes#server-side-classifier-review) indique quel comportement de passerelle cause les refus, et le [guide de compatibilité de passerelle](/docs/fr/llm-gateway-protocol#feature-pass-through) liste ce qu'il faut transmettre inchangé.

603* Définissez `CLAUDE_CODE_AUTO_MODE_SERVER=0` avant de démarrer Claude Code pour utiliser ses propres demandes de classificateur à la place. Avant v2.1.281, Claude Code ne lisait pas la variable sur une connexion directe à l'API Anthropic.

604* Pour approuver les actions vous-même à la place, [basculez hors du mode auto](/docs/fr/permission-modes#switch-permission-modes)

605 

606Avant v2.1.280, Claude Code refusait chaque action d'une réponse sans verdict immédiatement et n'arrêtait jamais le tour.

607 

569<h3 id="agent-terminated-early-due-to-an-api-error">608<h3 id="agent-terminated-early-due-to-an-api-error">

570 L'agent s'est arrêté prématurément en raison d'une erreur API609 L'agent s'est arrêté prématurément en raison d'une erreur API

571</h3>610</h3>


2393* Aucune action nécessaire quand vous voyez la ligne d'espace réservé. La session continue sans le contenu supprimé.2432* Aucune action nécessaire quand vous voyez la ligne d'espace réservé. La session continue sans le contenu supprimé.

2394* Si chaque tour d'une session reprise échoue avec l'erreur 400 à la place, exécutez `claude update` et reprenez la session à nouveau. Les versions antérieures à v2.1.246 ne suppriment pas le contenu.2433* Si chaque tour d'une session reprise échoue avec l'erreur 400 à la place, exécutez `claude update` et reprenez la session à nouveau. Les versions antérieures à v2.1.246 ne suppriment pas le contenu.

2395 2434 

2435<h3 id="role-system-must-precede-an-assistant-message">

2436 role 'system' doit précéder un message 'assistant'

2437</h3>

2438 

2439L'API a refusé la requête avec un 400 parce qu'un message système se trouve à une position dans la conversation qu'elle n'accepte pas :

2440 

2441```text theme={null}

2442API Error: 400 messages.6: role 'system' must precede an 'assistant' message or end the array; ...

2443```

2444 

2445Claude Code envoie une partie de son texte de rappel et de pièce jointe comme des messages système à l'intérieur de la conversation. Quand l'API refuse la position d'un, Claude Code réessaie la requête une fois avec ce texte envoyé comme des messages utilisateur ordinaires à la place. Les libellés de placement frère de l'API, comme `use the top-level 'system' parameter for the initial system prompt`, obtiennent la même récupération.

2446 

2447Quand l'erreur apparaît, le message système refusé n'est pas un que Claude Code peut supprimer. Cela signifie généralement qu'un proxy ou une [passerelle LLM](/docs/fr/llm-gateway-protocol) entre Claude Code et l'API a ajouté un message système de son propre ou réordonné la conversation.

2448 

2449**Que faire :**

2450 

2451* Exécutez `/clear` pour démarrer une conversation nouvelle. Si l'erreur revient là aussi, la cause est sur le chemin de la requête, pas dans la conversation enregistrée.

2452* Si l'erreur se répète à chaque tour derrière un proxy ou une passerelle configurée via [`ANTHROPIC_BASE_URL`](/docs/fr/env-vars), connectez-vous sans le proxy pour confirmer la source, et signalez l'erreur à celui qui l'exploite

2453 

2454Avant v2.1.280, Claude Code ne reconnaissait pas ce libellé, donc l'erreur apparaissait aussi quand le message système refusé était un que Claude Code lui-même envoyait, et chaque tour ultérieur de la conversation échouait de la même manière.

2455 

2456<h3 id="invalid-encrypted-content-in-search-result-block">

2457 Contenu chiffré invalide dans le bloc search\_result

2458</h3>

2459 

2460L'API a refusé la requête avec un 400 parce que l'historique de conversation contient du contenu de recherche web hébergé qu'elle ne peut pas déchiffrer. Le libellé nomme le champ qu'elle ne peut pas lire :

2461 

2462```text theme={null}

2463API Error: 400 messages.21.content.0: Invalid `encrypted_content` in `search_result` block

2464API Error: 400 messages.21.content.3.citations.0: Invalid `encrypted_index` in `text` block

2465API Error: 400 Failed to decrypt web search result content

2466```

2467 

2468Les résultats de l'[outil de recherche web hébergé](https://platform.claude.com/docs/en/agents-and-tools/tool-use/web-search-tool) de l'API portent des champs chiffrés que seule l'API peut lire. L'API refuse une requête qui rejoue du contenu qu'elle ne peut pas déchiffrer, comme du contenu produit pour une organisation différente.

2469 

2470L'[outil WebSearch](/docs/fr/tools-reference#websearch-tool-behavior) propre de Claude Code enregistre les résultats de recherche en texte brut, donc ces blocs atteignent généralement une conversation via un proxy ou une [passerelle LLM](/docs/fr/llm-gateway-protocol) qui a exécuté la recherche web hébergée elle-même.

2471 

2472Les blocs refusés restent dans l'historique de conversation, donc chaque tour ultérieur et `/compact` échouent de la même manière.

2473 

2474**Que faire :**

2475 

2476* Exécutez `/clear` ou démarrez une nouvelle session ; la nouvelle conversation ne porte pas les blocs refusés

2477* Si vous exécutez Claude Code derrière un proxy ou une passerelle, signalez l'erreur à celui qui l'exploite

2478 

2396<h3 id="usage-policy-refusal">2479<h3 id="usage-policy-refusal">

2397 Refus de la politique d'utilisation2480 Refus de la politique d'utilisation

2398</h3>2481</h3>


2629* Si le répertoire a été recréé au même chemin, votre shell tient toujours le répertoire supprimé. Exécutez `cd "$PWD"` ou quittez et réentrez le répertoire, puis exécutez `claude` à nouveau2712* Si le répertoire a été recréé au même chemin, votre shell tient toujours le répertoire supprimé. Exécutez `cd "$PWD"` ou quittez et réentrez le répertoire, puis exécutez `claude` à nouveau

2630* Pour `EPERM` sur macOS, quittez votre application terminal avec Cmd+Q, ouvrez-la à nouveau, retournez à ce dossier, et exécutez `claude`. Si `ls` dans ce dossier échoue toujours, ouvrez **Paramètres système > Confidentialité et sécurité > Fichiers et dossiers**, activez le dossier pour votre application terminal, puis rouvrez le terminal2713* Pour `EPERM` sur macOS, quittez votre application terminal avec Cmd+Q, ouvrez-la à nouveau, retournez à ce dossier, et exécutez `claude`. Si `ls` dans ce dossier échoue toujours, ouvrez **Paramètres système > Confidentialité et sécurité > Fichiers et dossiers**, activez le dossier pour votre application terminal, puis rouvrez le terminal

2631 2714 

2715<h3 id="temp-directory-refused-or-cannot-be-created">

2716 Le répertoire temporaire a été refusé ou ne peut pas être créé

2717</h3>

2718 

2719Sur macOS et Linux, Claude Code crée un répertoire temporaire privé au démarrage, `claude-<uid>` sous le répertoire temporaire du système ou le remplacement [`CLAUDE_CODE_TMPDIR`](/docs/fr/env-vars). Lorsque le répertoire ne peut pas être créé, ou qu'une entrée existant déjà à ce chemin échoue les vérifications de sécurité, Claude Code imprime l'échec sur stderr et se termine avec le code 1 plutôt que de démarrer la session :

2720 

2721```text wrap theme={null}

2722ENOSPC: no space left on device, mkdir '/tmp/claude-501'

2723 

2724Temp directory /tmp/claude-501 is not a directory (may be an attacker-planted symlink). Refusing to use it. Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it.

2725 

2726Temp directory /tmp/claude-501 is owned by uid 502, expected 501. Refusing to use it — another user may have pre-created it. Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it.

2727 

2728Temp directory /tmp/claude-501 is not readable (its mode may have been altered, or a path component denies search). Refusing to use it — restore its permissions (chmod 0700) or remove it. Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it.

2729```

2730 

2731**Que faire :**

2732 

2733* Pour `ENOSPC`, libérez de l'espace disque sur le volume qui contient le répertoire temporaire

2734* Pour les formes `Refusing to use it`, supprimez l'entrée nommée elle-même, pas ce vers quoi un lien pointe, et démarrez Claude Code à nouveau ; pour la forme `owned by uid`, seul un administrateur ou cet utilisateur peut la supprimer

2735* Pour `is not readable`, exécutez `chmod 0700` sur le répertoire nommé, ou supprimez-le et redémarrez

2736* Dans l'un de ces cas, définissez [`CLAUDE_CODE_TMPDIR`](/docs/fr/env-vars) sur un répertoire que vous contrôlez et démarrez Claude Code à nouveau, en laissant le chemin refusé seul

2737 

2632<h3 id="directory-couldnt-be-resolved-to-a-real-location">2738<h3 id="directory-couldnt-be-resolved-to-a-real-location">

2633 Le répertoire n'a pas pu être résolu à un emplacement réel2739 Le répertoire n'a pas pu être résolu à un emplacement réel

2634</h3>2740</h3>


2954 3060 

2955* Une faute de frappe, telle que `/hepl` pour `/help`. [Comment le menu de commande correspond à ce que vous tapez](/docs/fr/commands#how-the-command-menu-matches-what-you-type) couvre le choix d'une correspondance proche avant de soumettre3061* Une faute de frappe, telle que `/hepl` pour `/help`. [Comment le menu de commande correspond à ce que vous tapez](/docs/fr/commands#how-the-command-menu-matches-what-you-type) couvre le choix d'une correspondance proche avant de soumettre

2956* Une commande qui existe mais n'est pas disponible dans cette session car une exigence n'est pas satisfaite, telle que votre plateforme, plan ou méthode d'authentification. Les entrées de dépannage pour [`/web-setup`](/docs/fr/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) et [`/schedule`](/docs/fr/routines#schedule-returns-unknown-command) parcourent deux cas courants. Certaines commandes répondent avec leur propre message lorsque la politique de votre organisation les désactive, telles que [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)3062* Une commande qui existe mais n'est pas disponible dans cette session car une exigence n'est pas satisfaite, telle que votre plateforme, plan ou méthode d'authentification. Les entrées de dépannage pour [`/web-setup`](/docs/fr/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) et [`/schedule`](/docs/fr/routines#schedule-returns-unknown-command) parcourent deux cas courants. Certaines commandes répondent avec leur propre message lorsque la politique de votre organisation les désactive, telles que [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)

2957* Une commande d'un [plugin](/docs/fr/plugins) ou [serveur MCP](/docs/fr/mcp#use-mcp-prompts-as-commands) qui n'est pas installé ou connecté dans cette session3063* Une commande d'un [plugin](/docs/fr/plugins/overview) ou [serveur MCP](/docs/fr/mcp#use-mcp-prompts-as-commands) qui n'est pas installé ou connecté dans cette session

2958 3064 

2959Claude Code répond à un nom `/` non appairé de cette manière uniquement dans une session de terminal interactive. Dans toute autre session, il envoie l'invite à Claude comme un message normal à la place, avec une note que la commande n'a pas s'exécutée et une liste de commandes que Claude peut exécuter dans la session. Ces sessions incluent :3065Claude Code répond à un nom `/` non appairé de cette manière uniquement dans une session de terminal interactive. Dans toute autre session, il envoie l'invite à Claude comme un message normal à la place, avec une note que la commande n'a pas s'exécutée et une liste de commandes que Claude peut exécuter dans la session. Ces sessions incluent :

2960 3066 


3192* Dans une session démarrée sans ces restrictions, exécutez `/tui fullscreen`, ou `/tui default` pour revenir. Claude Code sauvegarde le [paramètre `tui`](/docs/fr/settings-reference#tui) là-bas3298* Dans une session démarrée sans ces restrictions, exécutez `/tui fullscreen`, ou `/tui default` pour revenir. Claude Code sauvegarde le [paramètre `tui`](/docs/fr/settings-reference#tui) là-bas

3193 3299 

3194<h3 id="couldnt-open-claude-desktop">3300<h3 id="couldnt-open-claude-desktop">

3195 Couldn't open Claude Desktop3301 Impossible d'ouvrir Claude Desktop

3196</h3>3302</h3>

3197 3303 

3198Vous avez exécuté [`/desktop`](/docs/fr/desktop#coming-from-the-cli), ou son alias `/app`, et la commande système que Claude Code utilise pour ouvrir Claude Desktop a échoué. La session reste dans le terminal.3304Vous avez exécuté [`/desktop`](/docs/fr/desktop#coming-from-the-cli), ou son alias `/app`, et la commande système que Claude Code utilise pour ouvrir Claude Desktop a échoué. La session reste dans le terminal.


3284 Erreurs de plugin3390 Erreurs de plugin

3285</h2>3391</h2>

3286 3392 

3287Ces erreurs proviennent de la configuration des [plugins](/docs/fr/plugins) et des [marketplaces](/docs/fr/plugin-marketplaces). Pour les problèmes de plugin qui ne produisent pas l'un des messages de cette page, comme une URL de marketplace qui ne se charge pas ou un plugin qui s'installe mais n'apparaît pas, consultez [Dépannage des plugins](/docs/fr/discover-plugins#troubleshooting).3393Ces erreurs proviennent de la configuration des [plugins](/docs/fr/plugins/overview) et des [marketplaces](/docs/fr/plugins/overview). Pour les problèmes de plugin qui ne produisent pas l'un des messages de cette page, comme une URL de marketplace qui ne se charge pas ou un plugin qui s'installe mais n'apparaît pas, consultez [Dépannage des plugins](/docs/fr/plugins/troubleshooting).

3288 3394 

3289<h3 id="plugin-eval-is-currently-in-early-access">3395<h3 id="plugin-eval-is-currently-in-early-access">

3290 plugin eval is currently in early access3396 plugin eval is currently in early access


3311 Marketplace is registered from an untrusted source3417 Marketplace is registered from an untrusted source

3312</h3>3418</h3>

3313 3419 

3314La marketplace est enregistrée sous un nom qui est [réservé aux marketplaces officielles d'Anthropic](/docs/fr/plugin-marketplaces#marketplace-schema), mais sa source enregistrée n'est pas un référentiel GitHub `anthropics`. Claude Code revérifie les noms réservés chaque fois qu'il charge ou actualise une marketplace, donc la marketplace et les plugins installés à partir de celle-ci cessent de se charger. Avant v2.1.205, le nom n'était vérifié que lorsque la marketplace était ajoutée, donc une entrée enregistrée avant que son nom ne soit réservé continuait à se charger.3420La marketplace est enregistrée sous un nom qui est [réservé aux marketplaces officielles d'Anthropic](/docs/fr/plugins/marketplace-reference#marketplace-file), mais sa source enregistrée n'est pas un référentiel GitHub `anthropics`. Claude Code revérifie les noms réservés chaque fois qu'il charge ou actualise une marketplace, donc la marketplace et les plugins installés à partir de celle-ci cessent de se charger. Avant v2.1.205, le nom n'était vérifié que lorsque la marketplace était ajoutée, donc une entrée enregistrée avant que son nom ne soit réservé continuait à se charger.

3315 3421 

3316```text theme={null}3422```text theme={null}

3317Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.3423Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.


3323 3429 

3324* Si la marketplace est déjà enregistrée, exécutez `claude plugin marketplace remove <name>`, puis ajoutez-la à nouveau à partir du référentiel officiel `github.com/anthropics`3430* Si la marketplace est déjà enregistrée, exécutez `claude plugin marketplace remove <name>`, puis ajoutez-la à nouveau à partir du référentiel officiel `github.com/anthropics`

3325* Si vous publiez une marketplace tierce qui utilisait le nom avant qu'il ne soit réservé, renommez-la et demandez aux utilisateurs de la rajouter à partir de votre source3431* Si vous publiez une marketplace tierce qui utilisait le nom avant qu'il ne soit réservé, renommez-la et demandez aux utilisateurs de la rajouter à partir de votre source

3326* Consultez la liste des noms réservés sous [Marketplace schema](/docs/fr/plugin-marketplaces#marketplace-schema)3432* Consultez la liste des noms réservés sous [Marketplace schema](/docs/fr/plugins/marketplace-reference#marketplace-file)

3433 

3434<h3 id="marketplace-name-is-another-spelling-of-a-reserved-name">

3435 Marketplace name is another spelling of a reserved name

3436</h3>

3437 

3438Le nom de la marketplace n'est pas lui-même un nom réservé, mais Claude Code le traite comme une autre orthographe d'un. [Reserved names](/docs/fr/plugins/marketplace-reference#reserved-name-spellings) énumère les orthographes qui comptent comme un nom réservé. Claude Code refuse un tel nom quand vous ajoutez la marketplace :

3439 

3440```text theme={null}

3441Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.

3442```

3443 

3444Quand une marketplace est déjà enregistrée sous un tel nom, son entrée cesse de se charger, et `/plugin`, `claude plugin install`, et `claude plugin update` avertissent :

3445 

3446```text wrap theme={null}

3447known_marketplaces.json has an entry named "claude.code.plugins", another spelling of the reserved marketplace name "claude-code-plugins", so it is ignored. Remove it with: claude plugin marketplace remove claude.code.plugins

3448```

3449 

3450Quand le nom aurait besoin de guillemets shell, le refus au moment de l'ajout se lit `This marketplace's name is another spelling of "<reserved>", a reserved marketplace name. It is not exactly the reserved name it appears to be.`

3451 

3452**Que faire :**

3453 

3454* Renommez la marketplace en un nom qui n'orthographie pas un nom réservé et ajoutez-la à nouveau

3455* Pour l'avertissement d'entrée ignorée, exécutez la commande `claude plugin marketplace remove` qu'il donne, ou supprimez l'entrée de `~/.claude/plugins/known_marketplaces.json`

3327 3456 

3328<h3 id="marketplace-is-already-added-from-a-different-source">3457<h3 id="marketplace-is-already-added-from-a-different-source">

3329 Marketplace is already added from a different source3458 Marketplace is already added from a different source

3330</h3>3459</h3>

3331 3460 

3332Vous avez confirmé l'ajout d'une marketplace via [`/plugin install <plugin> --marketplace <source>`](/docs/fr/discover-plugins#add-a-marketplace-and-install-in-one-command), et le catalogue que Claude Code a récupéré à partir de cette source se nomme lui-même de la même façon qu'une marketplace que vous avez déjà ajoutée à partir d'une source différente. Claude Code conserve la marketplace existante au lieu de la remplacer, et le plugin n'est pas installé.3461Vous avez confirmé l'ajout d'une marketplace via [`/plugin install <plugin> --marketplace <source>`](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command), et le catalogue que Claude Code a récupéré à partir de cette source se nomme lui-même de la même façon qu'une marketplace que vous avez déjà ajoutée à partir d'une source différente. Claude Code conserve la marketplace existante au lieu de la remplacer, et le plugin n'est pas installé.

3333 3462 

3334```text theme={null}3463```text theme={null}

3335Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.3464Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.


3344 Plugin command references user\_config in a shell command3473 Plugin command references user\_config in a shell command

3345</h3>3474</h3>

3346 3475 

3347Un hook de plugin, un [monitor](/docs/fr/plugins-reference#monitors), ou une commande MCP [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication) référence une [option de plugin](/docs/fr/plugins-reference#user-configuration) `${user_config.KEY}`, et la chaîne substituée serait passée à un shell. Une valeur configurée contenant `$(...)`, des backticks, ou `;` s'exécuterait comme du code là-bas, donc Claude Code refuse de démarrer le composant au lieu de substituer la valeur. La vérification s'exécute sur le modèle de commande, donc l'erreur apparaît même quand aucune valeur n'est encore configurée. Avant v2.1.207, la valeur était substituée dans la commande shell.3476Un hook de plugin, un [monitor](/docs/fr/plugins/components#monitors), ou une commande MCP [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication) référence une [option de plugin](/docs/fr/plugins/manifest-reference#user-configuration) `${user_config.KEY}`, et la chaîne substituée serait passée à un shell. Une valeur configurée contenant `$(...)`, des backticks, ou `;` s'exécuterait comme du code là-bas, donc Claude Code refuse de démarrer le composant au lieu de substituer la valeur. La vérification s'exécute sur le modèle de commande, donc l'erreur apparaît même quand aucune valeur n'est encore configurée. Avant v2.1.207, la valeur était substituée dans la commande shell.

3348 3477 

3349La formulation dépend de quelle surface a référencé l'option. Un hook de forme shell rapporte :3478La formulation dépend de quelle surface a référencé l'option. Un hook de forme shell rapporte :

3350 3479 


3374 Plugin archive integrity check failed3503 Plugin archive integrity check failed

3375</h3>3504</h3>

3376 3505 

3377L'entrée de marketplace du plugin utilise une [source `archive`](/docs/fr/plugin-marketplaces#zip-archives) avec une épingle `sha256`, et le digest du fichier téléchargé ne correspond pas à l'épingle. Claude Code refuse l'installation, donc rien ne change dans le cache du plugin. L'inadéquation a trois causes possibles :3506L'entrée de marketplace du plugin utilise une [source `archive`](/docs/fr/plugins/marketplace-reference#archive-plugin-source) avec une épingle `sha256`, et le digest du fichier téléchargé ne correspond pas à l'épingle. Claude Code refuse l'installation, donc rien ne change dans le cache du plugin. L'inadéquation a trois causes possibles :

3378 3507 

3379* Le fichier à l'URL a changé après que l'auteur ait calculé l'épingle3508* Le fichier à l'URL a changé après que l'auteur ait calculé l'épingle

3380* L'auteur a entré le mauvais digest dans l'entrée de marketplace3509* L'auteur a entré le mauvais digest dans l'entrée de marketplace


3394 Path escapes plugin directory3523 Path escapes plugin directory

3395</h3>3524</h3>

3396 3525 

3397Un chemin de composant de plugin, déclaré dans le `plugin.json` du plugin ou dans son [entrée de marketplace](/docs/fr/plugin-marketplaces#plugin-entries), se résout en dehors du répertoire du plugin. Claude Code supprime ce chemin et charge le reste du plugin. Le nom du composant dans le message, comme `commands` ou `hooks`, nomme le champ qui a déclaré le chemin.3526Un chemin de composant de plugin, déclaré dans le `plugin.json` du plugin ou dans son [entrée de marketplace](/docs/fr/plugins/marketplace-reference#plugin-entries), se résout en dehors du répertoire du plugin. Claude Code supprime ce chemin et charge le reste du plugin. Le nom du composant dans le message, comme `commands` ou `hooks`, nomme le champ qui a déclaré le chemin.

3398 3527 

3399```text theme={null}3528```text theme={null}

3400commands path escapes plugin directory: ./../shared.md3529commands path escapes plugin directory: ./../shared.md


3402 3531 

3403Dans la sortie de la commande `claude plugin`, la même erreur se lit `Path escapes plugin directory: ./../shared.md (commands)`.3532Dans la sortie de la commande `claude plugin`, la même erreur se lit `Path escapes plugin directory: ./../shared.md (commands)`.

3404 3533 

3405Claude Code rejette à la fois un chemin qui pointe en dehors du plugin tel qu'écrit, comme `../shared-utils`, et un lien symbolique qui mène en dehors du plugin et n'en est pas un que les [règles de lien symbolique de marketplace](/docs/fr/plugins-reference#share-files-within-a-marketplace-with-symlinks) permettent. Pour un lien symbolique, le message indique également où le chemin se résout :3534Claude Code rejette à la fois un chemin qui pointe en dehors du plugin tel qu'écrit, comme `../shared-utils`, et un lien symbolique qui mène en dehors du plugin et n'en est pas un que les [règles de lien symbolique de marketplace](/docs/fr/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks) permettent. Pour un lien symbolique, le message indique également où le chemin se résout :

3406 3535 

3407```text theme={null}3536```text theme={null}

3408commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory3537commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory


3423* Déplacez le fichier référencé à l'intérieur du répertoire du plugin et pointez le chemin vers lui avec un chemin relatif `./`3552* Déplacez le fichier référencé à l'intérieur du répertoire du plugin et pointez le chemin vers lui avec un chemin relatif `./`

3424* Si le chemin est un lien symbolique vers un fichier en dehors du plugin, remplacez le lien symbolique par une copie du fichier3553* Si le chemin est un lien symbolique vers un fichier en dehors du plugin, remplacez le lien symbolique par une copie du fichier

3425* Si le message dit que le chemin contient une barre oblique inverse, écrivez le chemin avec des barres obliques avant, par exemple `./commands/deploy.md`3554* Si le message dit que le chemin contient une barre oblique inverse, écrivez le chemin avec des barres obliques avant, par exemple `./commands/deploy.md`

3426* Pour partager des fichiers avec d'autres plugins dans la même marketplace, liez-les avec un lien symbolique à l'intérieur du répertoire du plugin, en suivant les [règles de lien symbolique](/docs/fr/plugins-reference#share-files-within-a-marketplace-with-symlinks)3555* Pour partager des fichiers avec d'autres plugins dans la même marketplace, liez-les avec un lien symbolique à l'intérieur du répertoire du plugin, en suivant les [règles de lien symbolique](/docs/fr/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)

3427 3556 

3428<h3 id="path-could-not-be-checked">3557<h3 id="path-could-not-be-checked">

3429 Path could not be checked3558 Path could not be checked


3431 3560 

3432Claude Code a demandé au système d'exploitation si un chemin de plugin existe et a reçu une erreur autre que « non trouvé », donc il ne charge pas ce que le chemin nomme. La quantité du plugin qui se charge dépend du chemin qui a échoué :3561Claude Code a demandé au système d'exploitation si un chemin de plugin existe et a reçu une erreur autre que « non trouvé », donc il ne charge pas ce que le chemin nomme. La quantité du plugin qui se charge dépend du chemin qui a échoué :

3433 3562 

3434* L'un des [emplacements de composant par défaut](/docs/fr/plugins-reference#file-locations-reference) d'un plugin, comme le dossier `skills/`, le fichier `monitors/monitors.json`, ou un [`SKILL.md` à la racine du plugin](/docs/fr/plugins-reference#skills) : les autres composants du plugin se chargent toujours3563* L'un des [emplacements de composant par défaut](/docs/fr/plugins/manifest-reference#standard-layout) d'un plugin, comme le dossier `skills/`, le fichier `monitors/monitors.json`, ou un [`SKILL.md` à la racine du plugin](/docs/fr/plugins/components#skills) : les autres composants du plugin se chargent toujours

3435* Le répertoire du plugin lui-même : rien de ce plugin ne se charge3564* Le répertoire du plugin lui-même : rien de ce plugin ne se charge

3436 3565 

3437Vous ne voyez pas cette erreur pour un chemin qui n'existe pas du tout. Dans `/plugin`, l'erreur apparaît sous le plugin et nomme le chemin et le code que le système d'exploitation a retourné :3566Vous ne voyez pas cette erreur pour un chemin qui n'existe pas du tout. Dans `/plugin`, l'erreur apparaît sous le plugin et nomme le chemin et le code que le système d'exploitation a retourné :


3461 Marketplace entry path does not stay inside the marketplace directory3590 Marketplace entry path does not stay inside the marketplace directory

3462</h3>3591</h3>

3463 3592 

3464L'[entrée de marketplace](/docs/fr/plugin-marketplaces#plugin-entries) du plugin déclare un chemin source que Claude Code ne peut pas résoudre à un emplacement à l'intérieur du répertoire de la marketplace elle-même, donc le plugin ne s'installe pas ou ne se charge pas. Le refus couvre :3593L'[entrée de marketplace](/docs/fr/plugins/marketplace-reference#plugin-entries) du plugin déclare un chemin source que Claude Code ne peut pas résoudre à un emplacement à l'intérieur du répertoire de la marketplace elle-même, donc le plugin ne s'installe pas ou ne se charge pas. Le refus couvre :

3465 3594 

3466* Un chemin d'entrée qui est absolu, grimpe en dehors de la marketplace avec `..`, ou est orthographié comme un chemin réseau3595* Un chemin d'entrée qui est absolu, grimpe en dehors de la marketplace avec `..`, ou est orthographié comme un chemin réseau

3467* Sur macOS et Linux, un chemin d'entrée qui contient une barre oblique inverse n'importe où après le `./` initial3596* Sur macOS et Linux, un chemin d'entrée qui contient une barre oblique inverse n'importe où après le `./` initial

3468* Une entrée dans une marketplace récupérée à partir d'une source distante, comme git ou une URL, qui atteint sa cible via un lien symbolique se résolvant en dehors du répertoire de la marketplace3597* Une entrée dans une marketplace récupérée à partir d'une source distante, comme git ou une URL, qui atteint sa cible via un lien symbolique se résolvant en dehors du répertoire de la marketplace

3469* Une entrée relative dans une marketplace ajoutée à partir d'une URL directe vers son `marketplace.json` : Claude Code télécharge uniquement ce fichier, donc aucun fichier de plugin local n'existe pour que le chemin nomme. Consultez [Plugins with relative paths fail in URL-based marketplaces](/docs/fr/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces)3598* Une entrée relative dans une marketplace ajoutée à partir d'une URL directe vers son `marketplace.json` : Claude Code télécharge uniquement ce fichier, donc aucun fichier de plugin local n'existe pour que le chemin nomme. Consultez [Plugins with relative paths fail in URL-based marketplaces](/docs/fr/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces)

3470 3599 

3471`claude plugin install` rapporte le refus comme ceci :3600`claude plugin install` rapporte le refus comme ceci :

3472 3601 


3483**Que faire :**3612**Que faire :**

3484 3613 

3485* Si vous maintenez la marketplace, écrivez la `source` de l'entrée comme un chemin relatif simple avec des barres obliques avant, comme `./plugins/my-plugin`, et gardez tout lien symbolique qu'il traverse pointé à l'intérieur du répertoire de la marketplace3614* Si vous maintenez la marketplace, écrivez la `source` de l'entrée comme un chemin relatif simple avec des barres obliques avant, comme `./plugins/my-plugin`, et gardez tout lien symbolique qu'il traverse pointé à l'intérieur du répertoire de la marketplace

3486* Si vous avez ajouté la marketplace à partir d'une URL directe, les entrées relatives ne peuvent pas se résoudre. Demandez à l'auteur de la marketplace d'utiliser [une autre source de plugin](/docs/fr/plugin-marketplaces#plugin-sources), ou ajoutez la marketplace à partir de son référentiel git à la place3615* Si vous avez ajouté la marketplace à partir d'une URL directe, les entrées relatives ne peuvent pas se résoudre. Demandez à l'auteur de la marketplace d'utiliser [une autre source de plugin](/docs/fr/plugins/marketplace-reference#plugin-sources), ou ajoutez la marketplace à partir de son référentiel git à la place

3487 3616 

3488<h3 id="failed-to-load-marketplace-configuration">3617<h3 id="failed-to-load-marketplace-configuration">

3489 Failed to load marketplace configuration3618 Failed to load marketplace configuration


3513 Plugin is required by your organization3642 Plugin is required by your organization

3514</h3>3643</h3>

3515 3644 

3516Vous avez exécuté `claude plugin disable`, ou utilisé l'onglet **Installed** de `/plugin`, pour désactiver un [plugin synchronisé à partir de claude.ai](/docs/fr/plugins-reference#synced-plugins) que votre organisation marque comme requis :3645Vous avez exécuté `claude plugin disable`, ou utilisé l'onglet **Installed** de `/plugin`, pour désactiver un [plugin synchronisé à partir de claude.ai](/docs/fr/plugins/loading#synced-plugins) que votre organisation marque comme requis :

3517 3646 

3518```text theme={null}3647```text theme={null}

3519Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.3648Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.

Details

32* [CLI](/docs/fr/quickstart) et [Agent SDK](/docs/fr/agent-sdk/overview)32* [CLI](/docs/fr/quickstart) et [Agent SDK](/docs/fr/agent-sdk/overview)

33* Extensions [VS Code](/docs/fr/vs-code) et [JetBrains](/docs/fr/jetbrains)33* Extensions [VS Code](/docs/fr/vs-code) et [JetBrains](/docs/fr/jetbrains)

34* [Subagents](/docs/fr/sub-agents), [hooks](/docs/fr/hooks-guide), [commands](/docs/fr/commands) et [skills](/docs/fr/skills)34* [Subagents](/docs/fr/sub-agents), [hooks](/docs/fr/hooks-guide), [commands](/docs/fr/commands) et [skills](/docs/fr/skills)

35* Mémoire [CLAUDE.md](/docs/fr/memory), [plugins](/docs/fr/plugins) et [serveurs MCP](/docs/fr/mcp)35* Mémoire [CLAUDE.md](/docs/fr/memory), [plugins](/docs/fr/plugins/overview) et [serveurs MCP](/docs/fr/mcp)

36* [Checkpoints](/docs/fr/checkpointing), [sandboxing](/docs/fr/sandboxing) et [Workflows](/docs/fr/workflows)36* [Checkpoints](/docs/fr/checkpointing), [sandboxing](/docs/fr/sandboxing) et [Workflows](/docs/fr/workflows)

37* Métriques [OpenTelemetry](/docs/fr/monitoring-usage) et le [fichier de paramètres géré](/docs/fr/managed-settings#delivery-mechanisms)37* Métriques [OpenTelemetry](/docs/fr/monitoring-usage) et le [fichier de paramètres géré](/docs/fr/managed-settings#delivery-mechanisms)

38 38 

Details

29* **[Dynamic workflows](/docs/fr/workflows)** exécutent de nombreux subagents à partir d'un script que Claude écrit, en retournant un seul résultat29* **[Dynamic workflows](/docs/fr/workflows)** exécutent de nombreux subagents à partir d'un script que Claude écrit, en retournant un seul résultat

30* **[Cross-session messaging](/docs/fr/cross-session-messaging)** permet à Claude de transmettre un message d'une de vos sessions à une autre30* **[Cross-session messaging](/docs/fr/cross-session-messaging)** permet à Claude de transmettre un message d'une de vos sessions à une autre

31* **[Hooks](/docs/fr/hooks-guide)** exécutent votre script, requête HTTP, appel d'outil MCP, invite ou subagent quand Claude Code atteint un événement du cycle de vie31* **[Hooks](/docs/fr/hooks-guide)** exécutent votre script, requête HTTP, appel d'outil MCP, invite ou subagent quand Claude Code atteint un événement du cycle de vie

32* **[Plugins](/docs/fr/plugins)** et **[marketplaces](/docs/fr/plugin-marketplaces)** empaquettent et distribuent ces fonctionnalités32* **[Plugins](/docs/fr/plugins/overview)** et **[marketplaces](/docs/fr/plugins/overview)** empaquettent et distribuent ces fonctionnalités

33 33 

34[Skills](/docs/fr/skills) sont l'extension la plus flexible. Une skill est un fichier markdown contenant des connaissances, des flux de travail ou des instructions. Vous pouvez invoquer des skills avec une commande comme `/deploy`, ou Claude peut les charger automatiquement quand elles sont pertinentes. Les skills peuvent s'exécuter dans votre conversation actuelle ou dans un contexte isolé via des subagents.34[Skills](/docs/fr/skills) sont l'extension la plus flexible. Une skill est un fichier markdown contenant des connaissances, des flux de travail ou des instructions. Vous pouvez invoquer des skills avec une commande comme `/deploy`, ou Claude peut les charger automatiquement quand elles sont pertinentes. Les skills peuvent s'exécuter dans votre conversation actuelle ou dans un contexte isolé via des subagents.

35 35 


52| **Hook** | Script, requête HTTP, appel d'outil MCP, invite ou subagent déclenché par des événements | Automatisation qui doit s'exécuter sur chaque événement correspondant | Exécutez ESLint après chaque modification de fichier |52| **Hook** | Script, requête HTTP, appel d'outil MCP, invite ou subagent déclenché par des événements | Automatisation qui doit s'exécuter sur chaque événement correspondant | Exécutez ESLint après chaque modification de fichier |

53| **[Artifact](/docs/fr/artifacts)** | Publiez la sortie de session en tant que page web privée et interactive | Sortie que vous voulez voir ou partager visuellement plutôt que sous forme de texte terminal | Une chronologie d'incident qui se met à jour au fur et à mesure que Claude enquête |53| **[Artifact](/docs/fr/artifacts)** | Publiez la sortie de session en tant que page web privée et interactive | Sortie que vous voulez voir ou partager visuellement plutôt que sous forme de texte terminal | Une chronologie d'incident qui se met à jour au fur et à mesure que Claude enquête |

54 54 

55**[Plugins](/docs/fr/plugins)** sont la couche d'empaquetage. Un plugin regroupe des skills, des hooks, des subagents et des serveurs MCP dans une seule unité installable. Les skills de plugin sont espacées de noms (comme `/my-plugin:review`) afin que plusieurs plugins puissent coexister. Utilisez les plugins quand vous voulez réutiliser la même configuration sur plusieurs référentiels ou distribuer à d'autres via une **[marketplace](/docs/fr/plugin-marketplaces)**.55**[Plugins](/docs/fr/plugins/overview)** sont la couche d'empaquetage. Un plugin regroupe des skills, des hooks, des subagents et des serveurs MCP dans une seule unité installable. Les skills de plugin sont espacées de noms (comme `/my-plugin:review`) afin que plusieurs plugins puissent coexister. Utilisez les plugins quand vous voulez réutiliser la même configuration sur plusieurs référentiels ou distribuer à d'autres via une **[marketplace](/docs/fr/plugins/overview)**.

56 56 

57<h3 id="build-your-setup-over-time">57<h3 id="build-your-setup-over-time">

58 Construire votre configuration au fil du temps58 Construire votre configuration au fil du temps


61Vous n'avez pas besoin de tout configurer à l'avance. Chaque fonctionnalité a un déclencheur reconnaissable, et la plupart des équipes les ajoutent à peu près dans cet ordre :61Vous n'avez pas besoin de tout configurer à l'avance. Chaque fonctionnalité a un déclencheur reconnaissable, et la plupart des équipes les ajoutent à peu près dans cet ordre :

62 62 

63| Déclencheur | Ajouter |63| Déclencheur | Ajouter |

64| :------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------- |64| :------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- |

65| Claude se trompe sur une convention ou une commande deux fois | Ajoutez-la à [CLAUDE.md](/docs/fr/memory) |65| Claude se trompe sur une convention ou une commande deux fois | Ajoutez-la à [CLAUDE.md](/docs/fr/memory) |

66| Vous continuez à demander à Claude d'être plus court, d'expliquer davantage ou de répondre dans le même format | Définissez un [style de sortie](/docs/fr/output-styles) |66| Vous continuez à demander à Claude d'être plus court, d'expliquer davantage ou de répondre dans le même format | Définissez un [style de sortie](/docs/fr/output-styles) |

67| Vous continuez à taper la même invite pour démarrer une tâche | Enregistrez-la en tant que [skill](/docs/fr/skills) invocable par l'utilisateur |67| Vous continuez à taper la même invite pour démarrer une tâche | Enregistrez-la en tant que [skill](/docs/fr/skills) invocable par l'utilisateur |

68| Vous collez le même playbook ou procédure multi-étapes dans le chat pour la troisième fois | Capturez-la en tant que [skill](/docs/fr/skills) |68| Vous collez le même playbook ou procédure multi-étapes dans le chat pour la troisième fois | Capturez-la en tant que [skill](/docs/fr/skills) |

69| Vous continuez à copier des données d'un onglet de navigateur que Claude ne peut pas voir | Connectez ce système en tant que [serveur MCP](/docs/fr/mcp) |69| Vous continuez à copier des données d'un onglet de navigateur que Claude ne peut pas voir | Connectez ce système en tant que [serveur MCP](/docs/fr/mcp) |

70| Claude lit de nombreux fichiers pour trouver où un symbole est défini ou utilisé | Installez un [plugin de code intelligence](/docs/fr/discover-plugins#code-intelligence) pour votre langage |70| Claude lit de nombreux fichiers pour trouver où un symbole est défini ou utilisé | Installez un [plugin de code intelligence](/docs/fr/plugins/code-intelligence) pour votre langage |

71| Une tâche secondaire inonde votre conversation avec une sortie que vous ne référencerez plus | Acheminez-la via un [subagent](/docs/fr/sub-agents) |71| Une tâche secondaire inonde votre conversation avec une sortie que vous ne référencerez plus | Acheminez-la via un [subagent](/docs/fr/sub-agents) |

72| Vous voulez que quelque chose se produise à chaque fois sans demander | Écrivez un [hook](/docs/fr/hooks-guide) |72| Vous voulez que quelque chose se produise à chaque fois sans demander | Écrivez un [hook](/docs/fr/hooks-guide) |

73| Un deuxième référentiel a besoin de la même configuration | Empaquetez-la en tant que [plugin](/docs/fr/plugins) |73| Un deuxième référentiel a besoin de la même configuration | Empaquetez-la en tant que [plugin](/docs/fr/plugins/overview) |

74 74 

75Les mêmes déclencheurs vous indiquent quand mettre à jour ce que vous avez déjà. Une erreur répétée ou un commentaire d'examen récurrent est une modification de CLAUDE.md, pas une correction ponctuelle dans le chat. Un flux de travail que vous continuez à ajuster manuellement est une skill qui a besoin d'une autre révision.75Les mêmes déclencheurs vous indiquent quand mettre à jour ce que vous avez déjà. Une erreur répétée ou un commentaire d'examen récurrent est une modification de CLAUDE.md, pas une correction ponctuelle dans le chat. Un flux de travail que vous continuez à ajuster manuellement est une skill qui a besoin d'une autre révision.

76 76 


207Les fonctionnalités peuvent être définies à plusieurs niveaux : à l'échelle de l'utilisateur, par projet, via des plugins ou via des politiques gérées. Vous pouvez également imbriquer des fichiers CLAUDE.md dans des sous-répertoires ou placer des skills dans des packages spécifiques d'un monorepo. Quand la même fonctionnalité existe à plusieurs niveaux, voici comment elles se superposent :207Les fonctionnalités peuvent être définies à plusieurs niveaux : à l'échelle de l'utilisateur, par projet, via des plugins ou via des politiques gérées. Vous pouvez également imbriquer des fichiers CLAUDE.md dans des sous-répertoires ou placer des skills dans des packages spécifiques d'un monorepo. Quand la même fonctionnalité existe à plusieurs niveaux, voici comment elles se superposent :

208 208 

209* **Les fichiers CLAUDE.md** sont additifs : tous les niveaux contribuent du contenu au contexte de Claude simultanément. Les fichiers de votre répertoire de travail et au-dessus se chargent au lancement ; les sous-répertoires se chargent au fur et à mesure que vous y travaillez. Quand les instructions entrent en conflit, Claude utilise son jugement pour les réconcilier. Consultez [comment les fichiers CLAUDE.md se chargent](/docs/fr/memory#how-claude-md-files-load).209* **Les fichiers CLAUDE.md** sont additifs : tous les niveaux contribuent du contenu au contexte de Claude simultanément. Les fichiers de votre répertoire de travail et au-dessus se chargent au lancement ; les sous-répertoires se chargent au fur et à mesure que vous y travaillez. Quand les instructions entrent en conflit, Claude utilise son jugement pour les réconcilier. Consultez [comment les fichiers CLAUDE.md se chargent](/docs/fr/memory#how-claude-md-files-load).

210* **Les skills et subagents** se remplacent par nom : quand le même nom existe à plusieurs niveaux, une définition gagne en fonction de la priorité (géré > utilisateur > projet pour les skills ; géré > drapeau CLI > projet > utilisateur > plugin pour les subagents). Les skills de plugin sont [espacées de noms](/docs/fr/plugins#add-skills-to-your-plugin) pour éviter les conflits. Consultez [découverte de skills](/docs/fr/skills#resolve-skills-that-share-a-name) et [portée du subagent](/docs/fr/sub-agents#choose-the-subagent-scope).210* **Les skills et subagents** se remplacent par nom : quand le même nom existe à plusieurs niveaux, une définition gagne en fonction de la priorité (géré > utilisateur > projet pour les skills ; géré > drapeau CLI > projet > utilisateur > plugin pour les subagents). Les skills de plugin sont [espacées de noms](/docs/fr/plugins/components#skills) pour éviter les conflits. Consultez [découverte de skills](/docs/fr/skills#resolve-skills-that-share-a-name) et [portée du subagent](/docs/fr/sub-agents#choose-the-subagent-scope).

211* **Les serveurs MCP** se remplacent par nom : local > projet > utilisateur. Consultez [portée MCP](/docs/fr/mcp#scope-hierarchy-and-precedence).211* **Les serveurs MCP** se remplacent par nom : local > projet > utilisateur. Consultez [portée MCP](/docs/fr/mcp#scope-hierarchy-and-precedence).

212* **Les hooks** fusionnent : tous les hooks enregistrés se déclenchent pour leurs événements correspondants indépendamment de la source. Consultez [hooks](/docs/fr/hooks-guide).212* **Les hooks** fusionnent : tous les hooks enregistrés se déclenchent pour leurs événements correspondants indépendamment de la source. Consultez [hooks](/docs/fr/hooks-guide).

213 213 


304 304 

305 **Coût du contexte :** Faible. Les recherches de symboles remplacent souvent les lectures de fichiers larges, donc l'utilisation nette du contexte peut diminuer.305 **Coût du contexte :** Faible. Les recherches de symboles remplacent souvent les lectures de fichiers larges, donc l'utilisation nette du contexte peut diminuer.

306 306 

307 <Tip>L'outil LSP est inactif jusqu'à ce que vous installiez un [plugin d'intelligence du code](/docs/fr/discover-plugins#code-intelligence) pour votre langage.</Tip>307 <Tip>L'outil LSP est inactif jusqu'à ce que vous installiez un [plugin d'intelligence du code](/docs/fr/plugins/code-intelligence) pour votre langage.</Tip>

308 </Tab>308 </Tab>

309 309 

310 <Tab title="Subagents">310 <Tab title="Subagents">


370 Automatisez les actions avec des hooks370 Automatisez les actions avec des hooks

371 </Card>371 </Card>

372 372 

373 <Card title="Plugins" icon="puzzle-piece" href="/docs/fr/plugins">373 <Card title="Plugins" icon="puzzle-piece" href="/docs/fr/plugins/overview">

374 Empaquetez et partagez des ensembles de fonctionnalités374 Empaquetez et partagez des ensembles de fonctionnalités

375 </Card>375 </Card>

376 376 

377 <Card title="Marketplaces" icon="store" href="/docs/fr/plugin-marketplaces">377 <Card title="Marketplaces" icon="store" href="/docs/fr/plugins/create-marketplace">

378 Hébergez et distribuez des collections de plugins378 Hébergez et distribuez des collections de plugins

379 </Card>379 </Card>

380</CardGroup>380</CardGroup>

fullscreen.md +2 −1

Details

100 100 

101* **Cliquez dans le champ de saisie du message** pour positionner votre curseur n'importe où dans le texte que vous tapez.101* **Cliquez dans le champ de saisie du message** pour positionner votre curseur n'importe où dans le texte que vous tapez.

102* **Cliquez sur une suggestion dans la liste de commandes `/` ou de fichiers `@`** pour l'accepter. Le survol met en évidence la ligne sous votre curseur.102* **Cliquez sur une suggestion dans la liste de commandes `/` ou de fichiers `@`** pour l'accepter. Le survol met en évidence la ligne sous votre curseur.

103* **Cliquez sur une option dans un menu de sélection** pour la choisir. Cela couvre les invites de permission, `/model`, `/config` et autres dialogues qui affichent une liste d'options. Le survol affiche un pointeur sur la ligne sous votre curseur. Nécessite Claude Code v2.1.187 ou version ultérieure.103* **Cliquez sur une option dans un menu de sélection** pour la choisir. Cela couvre les invites de permission, `/model`, `/config` et autres dialogues qui affichent une liste d'options. Le survol affiche un pointeur sur la ligne sous votre curseur.

104* **Cliquez sur une option dans un menu de sélection multiple** pour la basculer, et cliquez sur le bouton de soumission pour confirmer vos choix. Cliquer sur une ligne de texte libre, comme la ligne `Other` dans une question à choix multiples, met le focus sur son champ de saisie pour que vous puissiez taper une réponse. Nécessite Claude Code v2.1.208 ou version ultérieure.104* **Cliquez sur une option dans un menu de sélection multiple** pour la basculer, et cliquez sur le bouton de soumission pour confirmer vos choix. Cliquer sur une ligne de texte libre, comme la ligne `Other` dans une question à choix multiples, met le focus sur son champ de saisie pour que vous puissiez taper une réponse. Nécessite Claude Code v2.1.208 ou version ultérieure.

105* **Cliquez sur une valeur de paramètre dans le panneau `/config`** pour la modifier, et faites défiler la liste des paramètres avec la molette de la souris. Nécessite Claude Code v2.1.271 ou version ultérieure.105* **Cliquez sur une valeur de paramètre dans le panneau `/config`** pour la modifier, et faites défiler la liste des paramètres avec la molette de la souris. Nécessite Claude Code v2.1.271 ou version ultérieure.

106* **Faites défiler un menu de sélection ou de sélection multiple avec la molette de la souris** lorsqu'il a plus d'options qu'il n'en affiche à la fois, comme la liste `/model` dans une fenêtre de terminal courte. La molette fait défiler la liste tandis que le pointeur se trouve sur ses options. Nécessite Claude Code v2.1.280 ou version ultérieure.

106* **Cliquez sur un résultat d'outil réduit** pour le développer et voir la sortie complète. Cliquez à nouveau pour le réduire. L'appel d'outil et son résultat se développent ensemble. Seuls les messages qui ont plus à afficher sont cliquables.107* **Cliquez sur un résultat d'outil réduit** pour le développer et voir la sortie complète. Cliquez à nouveau pour le réduire. L'appel d'outil et son résultat se développent ensemble. Seuls les messages qui ont plus à afficher sont cliquables.

107 * Cliquer développe également la sortie d'une commande shell `!`, qu'il s'agisse d'un résultat tronqué plus ancien ou de la ligne de progression en direct pendant l'exécution de la commande. Nécessite Claude Code v2.1.257 ou version ultérieure.108 * Cliquer développe également la sortie d'une commande shell `!`, qu'il s'agisse d'un résultat tronqué plus ancien ou de la ligne de progression en direct pendant l'exécution de la commande. Nécessite Claude Code v2.1.257 ou version ultérieure.

108* **Maintenez `Cmd` sur macOS, ou `Ctrl` sur Linux et Windows, et cliquez sur une URL ou un chemin de fichier** pour l'ouvrir. Les URLs simples `http://` et `https://` s'ouvrent dans votre navigateur, et les chemins de fichiers dans la sortie d'outil, comme ceux imprimés après une opération Edit ou Write, s'ouvrent dans votre application par défaut. Un simple clic sans le modificateur n'ouvre pas les liens, ce qui correspond au comportement du terminal natif.109* **Maintenez `Cmd` sur macOS, ou `Ctrl` sur Linux et Windows, et cliquez sur une URL ou un chemin de fichier** pour l'ouvrir. Les URLs simples `http://` et `https://` s'ouvrent dans votre navigateur, et les chemins de fichiers dans la sortie d'outil, comme ceux imprimés après une opération Edit ou Write, s'ouvrent dans votre application par défaut. Un simple clic sans le modificateur n'ouvre pas les liens, ce qui correspond au comportement du terminal natif.

Details

50* Exécutez `/install-github-app` à nouveau. Lorsque le repository a déjà un `claude.yml`, sélectionnez **Mettre à jour le fichier de workflow avec la dernière version**. Claude Code pousse des copies fraîches des fichiers de workflow vers une nouvelle branche et ouvre la pull request, comme une première installation.50* Exécutez `/install-github-app` à nouveau. Lorsque le repository a déjà un `claude.yml`, sélectionnez **Mettre à jour le fichier de workflow avec la dernière version**. Claude Code pousse des copies fraîches des fichiers de workflow vers une nouvelle branche et ouvre la pull request, comme une première installation.

51* Ajoutez l'argument `--comment` et la ligne `claude_args` de l'[exemple de workflow de révision](#run-a-skill) au fichier enregistré vous-même, ce qui conserve les autres modifications que vous y avez apportées.51* Ajoutez l'argument `--comment` et la ligne `claude_args` de l'[exemple de workflow de révision](#run-a-skill) au fichier enregistré vous-même, ce qui conserve les autres modifications que vous y avez apportées.

52 52 

53Après l'installation de la GitHub App, Claude Code demande si vous voulez continuer avec la configuration de GitHub Actions. Choisissez **Ignorer pour l'instant** pour arrêter avec seulement la GitHub App installée. Exécutez `/install-github-app` à nouveau plus tard pour terminer les étapes de workflow et de secret. Avant v2.1.187, Claude Code procédait directement à la sélection du workflow.53Après l'installation de la GitHub App, Claude Code demande si vous voulez continuer avec la configuration de GitHub Actions. Choisissez **Ignorer pour l'instant** pour arrêter avec seulement la GitHub App installée. Exécutez `/install-github-app` à nouveau plus tard pour terminer les étapes de workflow et de secret.

54 54 

55<Note>55<Note>

56 * Lorsque vous installez la GitHub App, vous lui accordez plusieurs permissions. Consultez [Permissions de la GitHub App](#github-app-permissions) pour l'ensemble complet56 * Lorsque vous installez la GitHub App, vous lui accordez plusieurs permissions. Consultez [Permissions de la GitHub App](#github-app-permissions) pour l'ensemble complet


237L'entrée `prompt` accepte une invocation de [skill](/docs/fr/skills) ainsi que du texte brut :237L'entrée `prompt` accepte une invocation de [skill](/docs/fr/skills) ainsi que du texte brut :

238 238 

239* Pour une skill dans le répertoire `.claude/skills/` de votre repository, exécutez `actions/checkout` avant l'étape `anthropics/claude-code-action` pour que les fichiers de skill soient disponibles sur le runner, puis passez `/skill-name` comme `prompt`.239* Pour une skill dans le répertoire `.claude/skills/` de votre repository, exécutez `actions/checkout` avant l'étape `anthropics/claude-code-action` pour que les fichiers de skill soient disponibles sur le runner, puis passez `/skill-name` comme `prompt`.

240* Pour une skill emballée dans un [plugin](/docs/fr/plugins), installez le plugin avec les entrées `plugin_marketplaces` et `plugins`, puis passez le `/plugin-name:skill-name` avec espace de noms comme `prompt`. L'entrée `plugins` prend `plugin-name@marketplace-name`, où le nom de la marketplace provient du manifeste de la marketplace elle-même plutôt que de l'URL de son repository.240* Pour une skill emballée dans un [plugin](/docs/fr/plugins/overview), installez le plugin avec les entrées `plugin_marketplaces` et `plugins`, puis passez le `/plugin-name:skill-name` avec espace de noms comme `prompt`. L'entrée `plugins` prend `plugin-name@marketplace-name`, où le nom de la marketplace provient du manifeste de la marketplace elle-même plutôt que de l'URL de son repository.

241 241 

242Le workflow suivant installe le plugin `code-review` et exécute sa skill lorsqu'une pull request est ouverte, mise à jour, rouverte ou marquée comme prête pour révision. Il exécute le même plugin que le workflow de révision de la configuration rapide. Utilisez un workflow comme celui-ci lorsque vous voulez contrôler le prompt, le modèle et les déclencheurs vous-même. Pour les révisions automatiques sans maintenir un fichier de workflow, consultez [Code Review](/docs/fr/code-review). Sur les repositories publics, GitHub retient les secrets des exécutions déclenchées par des pull requests de fork, donc la révision s'exécute uniquement sur les pull requests des branches du même repository.242Le workflow suivant installe le plugin `code-review` et exécute sa skill lorsqu'une pull request est ouverte, mise à jour, rouverte ou marquée comme prête pour révision. Il exécute le même plugin que le workflow de révision de la configuration rapide. Utilisez un workflow comme celui-ci lorsque vous voulez contrôler le prompt, le modèle et les déclencheurs vous-même. Pour les révisions automatiques sans maintenir un fichier de workflow, consultez [Code Review](/docs/fr/code-review). Sur les repositories publics, GitHub retient les secrets des exécutions déclenchées par des pull requests de fork, donc la révision s'exécute uniquement sur les pull requests des branches du même repository.

243 243 

Details

68Le manifeste configure la GitHub App avec les permissions et les événements webhook ci-dessous, qui couvrent ensemble les sessions web, la révision de code, Claude Security, les places de marché de plugins et les métriques de contribution :68Le manifeste configure la GitHub App avec les permissions et les événements webhook ci-dessous, qui couvrent ensemble les sessions web, la révision de code, Claude Security, les places de marché de plugins et les métriques de contribution :

69 69 

70| Permission | Accès | Utilisé pour |70| Permission | Accès | Utilisé pour |

71| :------------------- | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |71| :------------------- | :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

72| Contents | Lecture et écriture | Clonage de dépôts et envoi de branches |72| Contents | Lecture et écriture | Clonage de dépôts et envoi de branches |

73| Pull requests | Lecture et écriture | Création de PR et publication de commentaires de révision |73| Pull requests | Lecture et écriture | Création de PR et publication de commentaires de révision |

74| Issues | Lecture et écriture | Réponse aux mentions de problèmes |74| Issues | Lecture et écriture | Réponse aux mentions de problèmes |

75| Checks | Lecture et écriture | Publication des exécutions de vérification de révision de code |75| Checks | Lecture et écriture | Publication des exécutions de vérification de révision de code |

76| Actions | Lecture | Lecture du statut CI pour la correction automatique |76| Actions | Lecture | Lecture du statut CI pour la correction automatique |

77| Commit statuses | Lecture | Lecture du statut CI des fournisseurs qui signalent les statuts de commit au lieu des exécutions de vérification |77| Commit statuses | Lecture | Lecture du statut CI des fournisseurs qui signalent les statuts de commit au lieu des exécutions de vérification |

78| Repository hooks | Lecture et écriture | Création d'un webhook sur un dépôt de place de marché de plugins lorsque **Synchroniser automatiquement** est activé pour une place de marché dans [Paramètres de l'organisation > Plugins](https://claude.ai/admin-settings/plugins) |78| Repository hooks | Lecture et écriture | Création d'un webhook sur un dépôt de place de marché de plugins lorsque **Synchroniser automatiquement** est activé pour une place de marché dans [**Paramètres de l'organisation > Plugins et compétences**](https://claude.ai/admin-settings/skills?tab=marketplaces) |

79| Metadata | Lecture | Requis par GitHub pour toutes les applications |79| Metadata | Lecture | Requis par GitHub pour toutes les applications |

80| Organization members | Lecture | Correspondance avec la GitHub App Claude sur github.com, qui l'utilise pour vérifier le rôle d'organisation d'un utilisateur qui se connecte lors de la liaison d'une installation |80| Organization members | Lecture | Correspondance avec la GitHub App Claude sur github.com, qui l'utilise pour vérifier le rôle d'organisation d'un utilisateur qui se connecte lors de la liaison d'une installation |

81 81 


160 160 

161Claude Code exécute git de manière non-interactive et rejette les connexions SSH aux hôtes qui ne figurent pas dans le fichier `known_hosts` de la machine. Une URL HTTPS avec un assistant d'identifiants git évite l'exigence `known_hosts`.161Claude Code exécute git de manière non-interactive et rejette les connexions SSH aux hôtes qui ne figurent pas dans le fichier `known_hosts` de la machine. Une URL HTTPS avec un assistant d'identifiants git évite l'exigence `known_hosts`.

162 162 

163Consultez [Créer et distribuer une marketplace de plugins](/docs/fr/plugin-marketplaces) pour le guide complet de la création de marketplaces.163Consultez [Créer et distribuer une marketplace de plugins](/docs/fr/plugins/create-marketplace) pour le guide complet de la création de marketplaces.

164 164 

165<h3 id="pre-register-ghes-marketplaces-with-managed-settings">165<h3 id="pre-register-ghes-marketplaces-with-managed-settings">

166 Pré-enregistrer les marketplaces GHES avec les paramètres gérés166 Pré-enregistrer les marketplaces GHES avec les paramètres gérés


262 262 

263* [Claude Code sur le web](/docs/fr/claude-code-on-the-web) : exécutez les sessions Claude Code sur l'infrastructure cloud263* [Claude Code sur le web](/docs/fr/claude-code-on-the-web) : exécutez les sessions Claude Code sur l'infrastructure cloud

264* [Révision de code](/docs/fr/code-review) : révisions de PR automatisées264* [Révision de code](/docs/fr/code-review) : révisions de PR automatisées

265* [Marketplaces de plugins](/docs/fr/plugin-marketplaces) : créer et distribuer des catalogues de plugins265* [Marketplaces de plugins](/docs/fr/plugins/host-marketplace) : créer et distribuer des catalogues de plugins

266* [Analyse](/docs/fr/analytics) : suivre l'utilisation et les métriques de contribution266* [Analyse](/docs/fr/analytics) : suivre l'utilisation et les métriques de contribution

267* [Paramètres gérés](/docs/fr/settings) : configuration de politique à l'échelle de l'organisation267* [Paramètres gérés](/docs/fr/settings) : configuration de politique à l'échelle de l'organisation

268* [Configuration réseau](/docs/fr/network-config) : exigences de pare-feu et de liste blanche IP268* [Configuration réseau](/docs/fr/network-config) : exigences de pare-feu et de liste blanche IP

glossary.md +13 −13

Details

303</h2>303</h2>

304 304 

305<h3 id="permission-mode">305<h3 id="permission-mode">

306 Permission mode306 Mode de permission

307</h3>307</h3>

308 308 

309Le comportement d'approbation de base pour la session. Basculez avec `Shift+Tab` dans la CLI ou utilisez le sélecteur de mode dans VS Code, Desktop et claude.ai. Les modes disponibles sont `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` et `bypassPermissions`.309Le comportement d'approbation de base pour la session. Basculez avec `Maj+Tab` dans l'interface de ligne de commande ou utilisez le sélecteur de mode dans VS Code, l'application de bureau et claude.ai. Les modes disponibles sont `default`, `acceptEdits`, `plan`, `auto`, `dontAsk` et `bypassPermissions`.

310 310 

311Le mode `default` est étiqueté Manual dans la CLI et dans les extensions VS Code et JetBrains, et Claude Code accepte `manual` comme alias pour la valeur.311Le mode `default` est étiqueté Manuel dans l'interface de ligne de commande, dans les extensions VS Code et JetBrains, et dans l'application de bureau, et Claude Code accepte `manual` comme alias pour la valeur.

312 312 

313En savoir plus : [Choisir un mode de permission](/docs/fr/permission-modes)313En savoir plus : [Choisir un mode de permission](/docs/fr/permission-modes)

314 314 

315<h3 id="permission-rule">315<h3 id="permission-rule">

316 Permission rule316 Règle de permission

317</h3>317</h3>

318 318 

319Une entrée de paramètres qui autorise, demande ou refuse une invocation d'outil en fonction du nom de l'outil et du modèle d'argument. Les règles sont évaluées deny→ask→allow, le premier match gagne. Les permission rules sont des contrôles granulaires superposés au-dessus du [permission mode](#permission-mode) plus large.319Une entrée de paramètres qui autorise, demande ou refuse une invocation d'outil en fonction du nom de l'outil et du modèle d'argument. Les règles sont évaluées deny→ask→allow, le premier correspondance gagne. Les règles de permission sont des contrôles granulaires superposés au-dessus du [mode de permission](#permission-mode) plus large.

320 320 

321En savoir plus : [Configurer les permissions](/docs/fr/permissions)321En savoir plus : [Configurer les permissions](/docs/fr/permissions)

322 322 


324 Plan mode324 Plan mode

325</h3>325</h3>

326 326 

327Un [permission mode](#permission-mode) où Claude recherche et propose des modifications sans modifier vos fichiers source. Il peut lire, rechercher et exécuter des commandes d'exploration, puis présente un plan pour approbation avant de toucher à quoi que ce soit. Entrez en plan mode avec `/plan` ou en appuyant sur `Shift+Tab`.327Un [mode de permission](#permission-mode) où Claude recherche et propose des modifications sans modifier vos fichiers source. Il peut lire, rechercher et exécuter des commandes d'exploration, puis présente un plan pour approbation avant de toucher à quoi que ce soit. Entrez en plan mode avec `/plan` ou en appuyant sur `Maj+Tab`.

328 328 

329En savoir plus : [Analyser avant de modifier avec le plan mode](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode)329En savoir plus : [Analyser avant de modifier avec plan mode](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode)

330 330 

331<h3 id="plugin">331<h3 id="plugin">

332 Plugin332 Plugin

333</h3>333</h3>

334 334 

335Un ensemble de skills, hooks, subagents et serveurs MCP emballés en tant qu'unité installable unique. Les plugin skills sont espacés de noms comme `plugin-name:skill-name` afin que plusieurs plugins coexistent. Distribuez les plugins entre les équipes via un [marketplace](/docs/fr/plugin-marketplaces).335Un ensemble de skills, hooks, subagents et serveurs MCP emballés comme une unité installable unique. Les skills de plugin sont espacés de noms comme `plugin-name:skill-name` afin que plusieurs plugins coexistent. Distribuez les plugins dans les équipes via un [marketplace](/docs/fr/plugins/overview).

336 336 

337En savoir plus : [Plugins](/docs/fr/plugins)337En savoir plus : [Plugins](/docs/fr/plugins/overview)

338 338 

339<h3 id="project-trust">339<h3 id="project-trust">

340 Project trust340 Confiance du projet

341</h3>341</h3>

342 342 

343Un dialogue acceptant un répertoire avant que Claude Code ne charge sa configuration. L'acceptation est enregistrée par répertoire de projet, sauf votre répertoire personnel, où la confiance est maintenue pour la session actuelle uniquement et l'invite réapparaît à chaque lancement. Jusqu'à ce que vous fassiez confiance à un répertoire, Claude Code retient une partie du contenu que son référentiel fournit, comme les règles d'autorisation de projet et les marketplaces de `.claude/settings.json`. [Ce qui s'exécute avant de faire confiance à un dossier](/docs/fr/permissions#what-runs-before-you-trust-a-folder) énumère chaque type de contenu, y compris ce qu'une session `-p` exécute sans dialogue.343Un dialogue acceptant un répertoire avant que Claude Code ne charge sa configuration. L'acceptation est enregistrée par répertoire de projet, sauf votre répertoire personnel, où la confiance est maintenue pour la session actuelle uniquement et l'invite réapparaît à chaque lancement. Jusqu'à ce que vous fassiez confiance à un répertoire, Claude Code retient une partie du contenu que son référentiel fournit, comme les règles d'autorisation du projet et les marketplaces de `.claude/settings.json`. [Ce qui s'exécute avant de faire confiance à un dossier](/docs/fr/permissions#what-runs-before-you-trust-a-folder) énumère chaque type de contenu, y compris ce qu'une session `-p` exécute sans dialogue.

344 344 

345En savoir plus : [Le répertoire `.claude`](/docs/fr/claude-directory)345En savoir plus : [Le répertoire `.claude`](/docs/fr/claude-directory)

346 346 

347<h3 id="prompt-injection">347<h3 id="prompt-injection">

348 Prompt injection348 Injection de prompt

349</h3>349</h3>

350 350 

351Des instructions hostiles intégrées dans un fichier, une page web ou un résultat d'outil qui tentent de rediriger Claude vers des actions que vous n'avez jamais demandées. Les défenses de Claude Code incluent le système de permissions, la détection d'injection de commande et la vérification de confiance. [Auto mode](#auto-mode) ajoute une sonde côté serveur qui analyse les résultats des outils pour détecter le contenu suspect et un classificateur qui examine les actions avec les résultats des outils supprimés, afin que le texte injecté ne puisse pas le manipuler directement.351Des instructions hostiles intégrées dans un fichier, une page web ou un résultat d'outil qui tentent de rediriger Claude vers des actions que vous n'avez jamais demandées. Les défenses de Claude Code incluent le système de permission, la détection d'injection de commande et la vérification de confiance. [Le mode Auto](#auto-mode) ajoute une sonde côté serveur qui analyse les résultats des outils pour détecter le contenu suspect et un classificateur qui examine les actions avec les résultats des outils supprimés, afin que le texte injecté ne puisse pas le manipuler directement.

352 352 

353En savoir plus : [Protéger contre l'injection de prompt](/docs/fr/security#protect-against-prompt-injection)353En savoir plus : [Protéger contre l'injection de prompt](/docs/fr/security#protect-against-prompt-injection)

354 354 

headless.md +1 −1

Details

38 Démarrer plus rapidement avec le mode bare38 Démarrer plus rapidement avec le mode bare

39</h3>39</h3>

40 40 

41Ajoutez `--bare` pour réduire le temps de démarrage en ignorant la découverte automatique des hooks, skills, commandes personnalisées, [sous-agents](/docs/fr/sub-agents), plugins, serveurs MCP, mémoire automatique et CLAUDE.md. Sans cela, `claude -p` charge le même [contexte](/docs/fr/how-claude-code-works#the-context-window) qu'une session interactive, y compris tout ce qui est configuré dans le répertoire de travail ou `~/.claude`.41Ajoutez `--bare` pour réduire le temps de démarrage en ignorant la découverte automatique des hooks, skills, commandes personnalisées, [sous-agents](/docs/fr/sub-agents), plugins installés, serveurs MCP, mémoire automatique et CLAUDE.md. Sans cela, `claude -p` charge le même [contexte](/docs/fr/how-claude-code-works#the-context-window) qu'une session interactive, y compris tout ce qui est configuré dans le répertoire de travail ou `~/.claude`.

42 42 

43Le mode bare est utile pour CI et les scripts où vous avez besoin du même résultat sur chaque machine. Un hook dans le `~/.claude` d'un coéquipier ou un serveur MCP dans le `.mcp.json` du projet ne s'exécutera pas, car le mode bare ne les lit jamais. Un répertoire que vous nommez avec `--add-dir` est une exception partielle : le mode bare charge les skills de son dossier `.claude/skills/`, mais ignore toujours ses dossiers `.claude/commands/` et `.claude/agents/`. [Skills from additional directories](/docs/fr/skills#skills-from-additional-directories) couvre ce qui se charge et ce qui ne se charge pas.43Le mode bare est utile pour CI et les scripts où vous avez besoin du même résultat sur chaque machine. Un hook dans le `~/.claude` d'un coéquipier ou un serveur MCP dans le `.mcp.json` du projet ne s'exécutera pas, car le mode bare ne les lit jamais. Un répertoire que vous nommez avec `--add-dir` est une exception partielle : le mode bare charge les skills de son dossier `.claude/skills/`, mais ignore toujours ses dossiers `.claude/commands/` et `.claude/agents/`. [Skills from additional directories](/docs/fr/skills#skills-from-additional-directories) couvre ce qui se charge et ce qui ne se charge pas.

44 44 

hooks.md +10 −12

Details

259L'endroit où vous définissez un hook détermine sa portée :259L'endroit où vous définissez un hook détermine sa portée :

260 260 

261| Emplacement | Portée | Partageable |261| Emplacement | Portée | Partageable |

262| :--------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |262| :------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

263| `~/.claude/settings.json` | Tous vos projets | Non, local à votre machine |263| `~/.claude/settings.json` | Tous vos projets | Non, local à votre machine |

264| `.claude/settings.json` | Projet unique | Oui, peut être commité dans le repo |264| `.claude/settings.json` | Projet unique | Oui, peut être commité dans le repo |

265| `.claude/settings.local.json` | Projet unique | Non, ignoré par git lorsque Claude Code enregistre un paramètre dedans |265| `.claude/settings.local.json` | Projet unique | Non, ignoré par git lorsque Claude Code enregistre un paramètre dedans |

266| Paramètres de politique gérée | À l'échelle de l'organisation | Oui, contrôlé par l'administrateur |266| Paramètres de politique gérée | À l'échelle de l'organisation | Oui, contrôlé par l'administrateur |

267| [Plugin](/docs/fr/plugins) `hooks/hooks.json` | Lorsque le plugin est activé | Oui, fourni avec le plugin |267| [Plugin](/docs/fr/plugins/overview) `hooks/hooks.json` | Lorsque le plugin est activé | Oui, fourni avec le plugin |

268| [Skill](/docs/fr/skills) frontmatter | Le reste de la session une fois que le skill est invoqué. Consultez [Hooks dans les skills et agents](#hooks-in-skills-and-agents) | Oui, défini dans le fichier du skill |268| [Skill](/docs/fr/skills) frontmatter | Le reste de la session une fois que le skill est invoqué. Consultez [Hooks dans les skills et agents](#hooks-in-skills-and-agents) | Oui, défini dans le fichier du skill |

269| [Subagent](/docs/fr/sub-agents) frontmatter | Pendant que ce subagent s'exécute | Oui, défini dans le fichier du subagent |269| [Subagent](/docs/fr/sub-agents) frontmatter | Pendant que ce subagent s'exécute | Oui, défini dans le fichier du subagent |

270 270 

271Les sessions cloud sur [Claude Code sur le web](/docs/fr/claude-code-on-the-web) ne lisent pas votre `~/.claude/settings.json` local ; les hooks y proviennent du `.claude/settings.json` du repo dans une session avec un seul référentiel, des plugins [synchronisés à partir de votre compte claude.ai](/docs/fr/plugins-reference#synced-plugins), et des paramètres gérés par le serveur de votre organisation. Dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code exécute également les hooks que l'opérateur a ensemencés à partir du `~/.claude/` de l'hôte du runner, et il exécute les hooks dans le fichier de paramètres gérés de l'image du runner lorsque ce fichier figure parmi les [sources gérées que Claude Code applique](/docs/fr/managed-settings#how-claude-code-combines-managed-sources), ce qui par défaut signifie uniquement lorsque ni les paramètres gérés par le serveur ni une politique Claude Code livrée par MDM ne fournissent le niveau géré. Consultez [ce qui se transfère de votre configuration](/docs/fr/cloud-environments#what-carries-over-from-your-setup) pour savoir quels fichiers atteignent une session cloud.271Les sessions cloud sur [Claude Code sur le web](/docs/fr/claude-code-on-the-web) ne lisent pas votre `~/.claude/settings.json` local. Dans un [environnement auto-hébergé](/docs/fr/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code exécute également les hooks que l'opérateur a ensemencés à partir du `~/.claude/` de l'hôte du runner, et il exécute les hooks dans le fichier de paramètres gérés de l'image du runner lorsque ce fichier figure parmi les [sources gérées que Claude Code applique](/docs/fr/managed-settings#how-claude-code-combines-managed-sources), ce qui par défaut signifie uniquement lorsque ni les paramètres gérés par le serveur ni une politique Claude Code livrée par MDM ne fournissent le niveau géré. Consultez [ce qui se transfère de votre configuration](/docs/fr/cloud-environments#what-carries-over-from-your-setup) pour savoir quels fichiers de paramètres et plugins, et donc quels hooks, atteignent une session cloud.

272 272 

273Pour plus de détails sur la résolution des fichiers de paramètres, consultez [paramètres](/docs/fr/settings).273Pour plus de détails sur la résolution des fichiers de paramètres, consultez [paramètres](/docs/fr/settings).

274 274 


278 278 

279* Vos hooks utilisateur, projet, local et plugin sont bloqués. Les hooks des plugins forcément activés dans les paramètres gérés `enabledPlugins` sont exempts279* Vos hooks utilisateur, projet, local et plugin sont bloqués. Les hooks des plugins forcément activés dans les paramètres gérés `enabledPlugins` sont exempts

280* Claude Code restreint également votre [`statusLine`](/docs/fr/statusline), [`fileSuggestion`](/docs/fr/settings-reference#filesuggestion) et [`subagentStatusLine`](/docs/fr/statusline#subagent-status-lines) aux paramètres gérés280* Claude Code restreint également votre [`statusLine`](/docs/fr/statusline), [`fileSuggestion`](/docs/fr/settings-reference#filesuggestion) et [`subagentStatusLine`](/docs/fr/statusline#subagent-status-lines) aux paramètres gérés

281* Claude Code désactive également les plugins avec une [source `command`](/docs/fr/plugin-marketplaces#command-sources), y compris les plugins forcément activés dans les paramètres gérés `enabledPlugins`, sauf si [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources) est explicitement défini à `false`. Les sources `command` nécessitent Claude Code v2.1.229 ou ultérieur281* Claude Code désactive également les plugins avec une [source `command`](/docs/fr/plugins/marketplace-reference#command-plugin-source), y compris les plugins forcément activés dans les paramètres gérés `enabledPlugins`, sauf si [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources) est explicitement défini à `false`. Les sources `command` nécessitent Claude Code v2.1.229 ou ultérieur

282* Claude Code bloque également les commandes [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) du marketplace sauf si [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources) est explicitement défini à `false`, sauf pour un marketplace que les paramètres gérés eux-mêmes déclarent282* Claude Code bloque également les commandes [`headersHelper`](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) du marketplace sauf si [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources) est explicitement défini à `false`, sauf pour un marketplace que les paramètres gérés eux-mêmes déclarent

283 283 

284Consultez [ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly).284Consultez [ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly).

285 285 


304 304 

305Un matcher sur le chemin de l'expression régulière est testé avec `RegExp.prototype.test` de JavaScript, qui réussit sur une correspondance n'importe où dans la valeur. `Edit.*` correspond à la fois à `Edit` et à `NotebookEdit` ; enveloppez le modèle dans `^` et `$`, comme dans `^Edit$`, lorsque vous avez besoin d'une correspondance de chaîne entière.305Un matcher sur le chemin de l'expression régulière est testé avec `RegExp.prototype.test` de JavaScript, qui réussit sur une correspondance n'importe où dans la valeur. `Edit.*` correspond à la fois à `Edit` et à `NotebookEdit` ; enveloppez le modèle dans `^` et `$`, comme dans `^Edit$`, lorsque vous avez besoin d'une correspondance de chaîne entière.

306 306 

307Les séparateurs par virgule et la tolérance des espaces blancs environnants nécessitent Claude Code v2.1.191 ou ultérieur.

308 

309Les traits d'union dans l'ensemble de correspondance exacte nécessitent Claude Code v2.1.195 ou ultérieur. Sur les versions antérieures, un nom avec trait d'union comme `code-reviewer` est évalué comme une expression régulière non ancrée, donc il se déclenche également pour `senior-code-reviewer` ; ancrez-le comme `^code-reviewer$` sur ces versions pour correspondre uniquement à ce nom.307Les traits d'union dans l'ensemble de correspondance exacte nécessitent Claude Code v2.1.195 ou ultérieur. Sur les versions antérieures, un nom avec trait d'union comme `code-reviewer` est évalué comme une expression régulière non ancrée, donc il se déclenche également pour `senior-code-reviewer` ; ancrez-le comme `^code-reviewer$` sur ces versions pour correspondre uniquement à ce nom.

310 308 

311`FileChanged` et `StopFailure` utilisent un ensemble de correspondance exacte plus étroit contenant uniquement des lettres, des chiffres, `_` et `|`. Un trait d'union, un espace ou une virgule dans un matcher pour ces deux événements le maintient sur le chemin de l'expression régulière, et seul `|` sépare les alternatives. Tous les autres événements avec support de matcher dans le tableau qui suit acceptent `|` ou `,`.309`FileChanged` et `StopFailure` utilisent un ensemble de correspondance exacte plus étroit contenant uniquement des lettres, des chiffres, `_` et `|`. Un trait d'union, un espace ou une virgule dans un matcher pour ces deux événements le maintient sur le chemin de l'expression régulière, et seul `|` sépare les alternatives. Tous les autres événements avec support de matcher dans le tableau qui suit acceptent `|` ou `,`.


516 514 

517Les deux formes supportent les mêmes [placeholders de chemin](#reference-scripts-by-path), et les deux les exportent comme variables d'environnement `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT` et `CLAUDE_PLUGIN_DATA` sur le processus lancé, donc un script peut lire `process.env.CLAUDE_PLUGIN_ROOT` indépendamment de la façon dont il a été lancé.515Les deux formes supportent les mêmes [placeholders de chemin](#reference-scripts-by-path), et les deux les exportent comme variables d'environnement `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT` et `CLAUDE_PLUGIN_DATA` sur le processus lancé, donc un script peut lire `process.env.CLAUDE_PLUGIN_ROOT` indépendamment de la façon dont il a été lancé.

518 516 

519Les hooks de plugin substituent également les valeurs [`${user_config.*}`](/docs/fr/plugins-reference#user-configuration), en forme exec uniquement : la valeur est substituée dans `command` et dans chaque élément `args` comme une chaîne brute, donc aucun shell ne la réanalyse.517Les hooks de plugin substituent également les valeurs [`${user_config.*}`](/docs/fr/plugins/manifest-reference#user-configuration), en forme exec uniquement : la valeur est substituée dans `command` et dans chaque élément `args` comme une chaîne brute, donc aucun shell ne la réanalyse.

520 518 

521Un hook de plugin en forme shell dont la `command` référence `${user_config.*}` échoue avec une [erreur](/docs/fr/errors#plugin-command-references-user-config) au lieu de s'exécuter. Pour utiliser une valeur d'option à partir d'un hook en forme shell, lisez la variable d'environnement `$CLAUDE_PLUGIN_OPTION_<KEY>`, comme `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` pour une option `webhook_url`, ou définissez `args` pour basculer le hook en forme exec. Avant v2.1.207, les commandes de hook de plugin en forme shell substituaient également `${user_config.*}`.519Un hook de plugin en forme shell dont la `command` référence `${user_config.*}` échoue avec une [erreur](/docs/fr/errors#plugin-command-references-user-config) au lieu de s'exécuter. Pour utiliser une valeur d'option à partir d'un hook en forme shell, lisez la variable d'environnement `$CLAUDE_PLUGIN_OPTION_<KEY>`, comme `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` pour une option `webhook_url`, ou définissez `args` pour basculer le hook en forme exec. Avant v2.1.207, les commandes de hook de plugin en forme shell substituaient également `${user_config.*}`.

522 520 


647Utilisez ces placeholders pour référencer les scripts de hook par rapport à la racine du projet ou du plugin, indépendamment du répertoire de travail lorsque le hook s'exécute :645Utilisez ces placeholders pour référencer les scripts de hook par rapport à la racine du projet ou du plugin, indépendamment du répertoire de travail lorsque le hook s'exécute :

648 646 

649* `${CLAUDE_PROJECT_DIR}` : la racine du projet où la session a démarré. Claude Code définit également cette variable dans l'environnement des [serveurs MCP stdio](/docs/fr/mcp#option-3-add-a-local-stdio-server) et des serveurs LSP de plugin.647* `${CLAUDE_PROJECT_DIR}` : la racine du projet où la session a démarré. Claude Code définit également cette variable dans l'environnement des [serveurs MCP stdio](/docs/fr/mcp#option-3-add-a-local-stdio-server) et des serveurs LSP de plugin.

650* `${CLAUDE_PLUGIN_ROOT}` : le répertoire d'installation du plugin, pour les scripts fournis avec un [plugin](/docs/fr/plugins). Consultez [variables d'environnement du plugin](/docs/fr/plugins-reference#environment-variables) pour savoir comment le chemin se comporte lors des mises à jour.648* `${CLAUDE_PLUGIN_ROOT}` : le répertoire d'installation du plugin, pour les scripts fournis avec un [plugin](/docs/fr/plugins/overview). Consultez [variables d'environnement du plugin](/docs/fr/plugins/manifest-reference#environment-variables) pour savoir comment le chemin se comporte lors des mises à jour.

651* `${CLAUDE_PLUGIN_DATA}` : le [répertoire de données persistantes](/docs/fr/plugins-reference#persistent-data-directory) du plugin, pour les dépendances et l'état qui doivent survivre aux mises à jour du plugin.649* `${CLAUDE_PLUGIN_DATA}` : le [répertoire de données persistantes](/docs/fr/plugins/components#path-variables-and-persistent-data) du plugin, pour les dépendances et l'état qui doivent survivre aux mises à jour du plugin.

652 650 

653<Note>651<Note>

654 **Les worktrees sont différents.** Si Claude entre dans un [worktree](/docs/fr/worktrees) pendant la session, Claude Code garde `${CLAUDE_PROJECT_DIR}` où il était et passe le chemin du worktree à vos hooks d'une manière différente :652 **Les worktrees sont différents.** Si Claude entre dans un [worktree](/docs/fr/worktrees) pendant la session, Claude Code garde `${CLAUDE_PROJECT_DIR}` où il était et passe le chemin du worktree à vos hooks d'une manière différente :


709 }707 }

710 ```708 ```

711 709 

712 Consultez la [référence des composants de plugin](/docs/fr/plugins-reference#hooks) pour plus de détails sur la création de hooks de plugin.710 Consultez la [référence des composants de plugin](/docs/fr/plugins/components#hooks) pour plus de détails sur la création de hooks de plugin.

713 </Tab>711 </Tab>

714</Tabs>712</Tabs>

715 713 


1351 1349 

1352En cas de succès, `--init-only` n'imprime rien sur le terminal. Pour confirmer que les hooks se sont exécutés, commencez par `claude --debug-file <path> --init-only`, en remplaçant `<path>` par un emplacement de fichier journal, et vérifiez le journal pour les entrées de hook Setup et SessionStart.1350En cas de succès, `--init-only` n'imprime rien sur le terminal. Pour confirmer que les hooks se sont exécutés, commencez par `claude --debug-file <path> --init-only`, en remplaçant `<path>` par un emplacement de fichier journal, et vérifiez le journal pour les entrées de hook Setup et SessionStart.

1353 1351 

1354Parce que Setup ne s'exécute pas à chaque lancement, un plugin qui a besoin d'une dépendance installée ne peut pas compter sur Setup seul. Le modèle pratique est de vérifier la dépendance à la première utilisation et d'installer en cas d'absence, par exemple un hook ou skill qui teste `${CLAUDE_PLUGIN_DATA}/node_modules` et exécute `npm install` s'il est absent. Voir le [répertoire de données persistantes](/docs/fr/plugins-reference#persistent-data-directory) pour savoir où stocker les dépendances installées. Si vous distribuez votre plugin via une marketplace, vous n'aurez peut-être pas besoin de ce modèle : Claude Code [installe automatiquement les dépendances de package Node.js éligibles](/docs/fr/plugins-reference#node-js-package-dependencies) quand il met en cache le plugin.1352Parce que Setup ne s'exécute pas à chaque lancement, un plugin qui a besoin d'une dépendance installée ne peut pas compter sur Setup seul. Le modèle pratique est de vérifier la dépendance à la première utilisation et d'installer en cas d'absence, par exemple un hook ou skill qui teste `${CLAUDE_PLUGIN_DATA}/node_modules` et exécute `npm install` s'il est absent. Voir le [répertoire de données persistantes](/docs/fr/plugins/components#path-variables-and-persistent-data) pour savoir où stocker les dépendances installées. Si vous distribuez votre plugin via une marketplace, vous n'aurez peut-être pas besoin de ce modèle : Claude Code [installe automatiquement les dépendances de package Node.js éligibles](/docs/fr/plugins/loading#node-js-package-dependencies) quand il met en cache le plugin.

1355 1353 

1356<h4 id="setup-input">1354<h4 id="setup-input">

1357 Entrée Setup1355 Entrée Setup

hooks-guide.md +5 −5

Details

10 10 

11Pour les décisions qui nécessitent un jugement plutôt que des règles déterministes, vous pouvez également utiliser des [hooks basés sur des invites](#prompt-based-hooks) ou des [hooks basés sur des agents](#agent-based-hooks) qui utilisent un modèle Claude pour évaluer les conditions.11Pour les décisions qui nécessitent un jugement plutôt que des règles déterministes, vous pouvez également utiliser des [hooks basés sur des invites](#prompt-based-hooks) ou des [hooks basés sur des agents](#agent-based-hooks) qui utilisent un modèle Claude pour évaluer les conditions.

12 12 

13Pour d'autres façons d'étendre Claude Code, consultez [skills](/docs/fr/skills) pour donner à Claude des instructions supplémentaires et des commandes exécutables, [subagents](/docs/fr/sub-agents) pour exécuter des tâches dans des contextes isolés, et [plugins](/docs/fr/plugins) pour empaqueter les extensions à partager entre les projets.13Pour d'autres façons d'étendre Claude Code, consultez [skills](/docs/fr/skills) pour donner à Claude des instructions supplémentaires et des commandes exécutables, [subagents](/docs/fr/sub-agents) pour exécuter des tâches dans des contextes isolés, et [plugins](/docs/fr/plugins/overview) pour empaqueter les extensions à partager entre les projets.

14 14 

15<Tip>15<Tip>

16 Ce guide couvre les cas d'usage courants et comment commencer. Pour les schémas d'événements complets, les formats d'entrée/sortie JSON et les fonctionnalités avancées comme les hooks asynchrones et les hooks d'outils MCP, consultez la [référence des Hooks](/docs/fr/hooks).16 Ce guide couvre les cas d'usage courants et comment commencer. Pour les schémas d'événements complets, les formats d'entrée/sortie JSON et les fonctionnalités avancées comme les hooks asynchrones et les hooks d'outils MCP, consultez la [référence des Hooks](/docs/fr/hooks).


612 Sortie du hook612 Sortie du hook

613</h4>613</h4>

614 614 

615Votre script dit à Claude Code quoi faire ensuite en écrivant sur stdout ou stderr et en quittant avec un code spécifique. Par exemple, un hook `PreToolUse` qui veut bloquer une commande :615Votre script dit à Claude Code quoi faire ensuite en écrivant sur stdout ou stderr et en quittant avec un code spécifique. Le hook `PreToolUse` suivant bloque une commande :

616 616 

617```bash theme={null}617```bash theme={null}

618#!/bin/bash618#!/bin/bash


710}710}

711```711```

712 712 

713Le matcher `"Edit|Write"` se déclenche uniquement lorsque Claude utilise l'outil `Edit` ou `Write`, pas lorsqu'il utilise `Bash`, `Read`, ou tout autre outil. Sur Claude Code v2.1.191 ou ultérieur, une virgule sépare les alternatives de la même manière, donc `"Edit, Write"` est équivalent. Consultez [Modèles de matcher](/docs/fr/hooks#matcher-patterns) pour savoir comment les noms simples et les expressions régulières sont évalués.713Le matcher `"Edit|Write"` se déclenche uniquement lorsque Claude utilise l'outil `Edit` ou `Write`, pas lorsqu'il utilise `Bash`, `Read`, ou tout autre outil. Une virgule sépare les alternatives de la même manière, donc `"Edit, Write"` est équivalent. Consultez [Modèles de matcher](/docs/fr/hooks#matcher-patterns) pour savoir comment les noms simples et les expressions régulières sont évalués.

714 714 

715<Note>715<Note>

716 Claude peut également créer ou modifier des fichiers en exécutant des commandes shell. Si votre hook doit voir chaque modification de fichier, par exemple pour l'analyse de conformité ou l'enregistrement d'audit, ajoutez un hook [`Stop`](/docs/fr/hooks#stop) qui analyse l'arborescence de travail une fois par tour. Pour une couverture par appel à la place, correspondez également à `Bash|PowerShell` et faites en sorte que votre script liste les fichiers modifiés et non suivis avec `git status --porcelain`. La section [Entrée du hook PowerShell](/docs/fr/hooks#powershell) explique pourquoi correspondre à `Bash` seul n'est pas suffisant. Pour exécuter un hook lorsqu'un fichier spécifique change sur le disque, quel que soit ce qui l'a écrit, utilisez un hook [FileChanged](/docs/fr/hooks#filechanged).716 Claude peut également créer ou modifier des fichiers en exécutant des commandes shell. Si votre hook doit voir chaque modification de fichier, par exemple pour l'analyse de conformité ou l'enregistrement d'audit, ajoutez un hook [`Stop`](/docs/fr/hooks#stop) qui analyse l'arborescence de travail une fois par tour. Pour une couverture par appel à la place, correspondez également à `Bash|PowerShell` et faites en sorte que votre script liste les fichiers modifiés et non suivis avec `git status --porcelain`. La section [Entrée du hook PowerShell](/docs/fr/hooks#powershell) explique pourquoi correspondre à `Bash` seul n'est pas suffisant. Pour exécuter un hook lorsqu'un fichier spécifique change sur le disque, quel que soit ce qui l'a écrit, utilisez un hook [FileChanged](/docs/fr/hooks#filechanged).


861L'endroit où vous ajoutez un hook détermine son périmètre :861L'endroit où vous ajoutez un hook détermine son périmètre :

862 862 

863| Emplacement | Périmètre | Partageable |863| Emplacement | Périmètre | Partageable |

864| :--------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------- |864| :------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------- |

865| `~/.claude/settings.json` | Tous vos projets | Non, local à votre machine |865| `~/.claude/settings.json` | Tous vos projets | Non, local à votre machine |

866| `.claude/settings.json` | Projet unique | Oui, peut être commité au repo |866| `.claude/settings.json` | Projet unique | Oui, peut être commité au repo |

867| `.claude/settings.local.json` | Projet unique | Non, gitignored lorsque Claude Code enregistre un paramètre dedans |867| `.claude/settings.local.json` | Projet unique | Non, gitignored lorsque Claude Code enregistre un paramètre dedans |

868| Paramètres de politique gérés | À l'échelle de l'organisation | Oui, contrôlé par l'administrateur |868| Paramètres de politique gérés | À l'échelle de l'organisation | Oui, contrôlé par l'administrateur |

869| [Plugin](/docs/fr/plugins) `hooks/hooks.json` | Lorsque le plugin est activé | Oui, fourni avec le plugin |869| [Plugin](/docs/fr/plugins/overview) `hooks/hooks.json` | Lorsque le plugin est activé | Oui, fourni avec le plugin |

870| [Skill](/docs/fr/skills) frontmatter | Le reste de la session une fois que le skill est invoqué. Consultez [Hooks dans les skills et les agents](/docs/fr/hooks#hooks-in-skills-and-agents) | Oui, défini dans le fichier du skill |870| [Skill](/docs/fr/skills) frontmatter | Le reste de la session une fois que le skill est invoqué. Consultez [Hooks dans les skills et les agents](/docs/fr/hooks#hooks-in-skills-and-agents) | Oui, défini dans le fichier du skill |

871| [Subagent](/docs/fr/sub-agents) frontmatter | Pendant que ce subagent s'exécute | Oui, défini dans le fichier du subagent |871| [Subagent](/docs/fr/sub-agents) frontmatter | Pendant que ce subagent s'exécute | Oui, défini dans le fichier du subagent |

872 872 

Details

45Les outils intégrés se divisent généralement en cinq catégories, chacune représentant un type d'agentivité différent.45Les outils intégrés se divisent généralement en cinq catégories, chacune représentant un type d'agentivité différent.

46 46 

47| Catégorie | Ce que Claude peut faire |47| Catégorie | Ce que Claude peut faire |

48| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |48| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| **Opérations sur les fichiers** | Lire des fichiers, éditer du code, créer de nouveaux fichiers, renommer et réorganiser |49| **Opérations sur les fichiers** | Lire des fichiers, éditer du code, créer de nouveaux fichiers, renommer et réorganiser |

50| **Recherche** | Trouver des fichiers par motif, rechercher du contenu avec regex, explorer les bases de code |50| **Recherche** | Trouver des fichiers par motif, rechercher du contenu avec regex, explorer les bases de code |

51| **Exécution** | Exécuter des commandes shell, démarrer des serveurs, exécuter des tests, utiliser git |51| **Exécution** | Exécuter des commandes shell, démarrer des serveurs, exécuter des tests, utiliser git |

52| **Web** | Rechercher sur le web, récupérer de la documentation, rechercher des messages d'erreur |52| **Web** | Rechercher sur le web, récupérer de la documentation, rechercher des messages d'erreur |

53| **Intelligence du code** | Voir les erreurs de type et les avertissements après les éditions, accéder aux définitions, trouver les références (nécessite [les plugins d'intelligence du code](/docs/fr/discover-plugins#code-intelligence)) |53| **Intelligence du code** | Voir les erreurs de type et les avertissements après les éditions, accéder aux définitions, trouver les références (nécessite [les plugins d'intelligence du code](/docs/fr/plugins/code-intelligence)) |

54 54 

55Ce sont les capacités principales. Claude dispose également d'outils pour générer des subagents, vous poser des questions, et d'autres tâches d'orchestration. Consultez [Outils disponibles pour Claude](/docs/fr/tools-reference) pour la liste complète.55Ce sont les capacités principales. Claude dispose également d'outils pour générer des subagents, vous poser des questions, et d'autres tâches d'orchestration. Consultez [Outils disponibles pour Claude](/docs/fr/tools-reference) pour la liste complète.

56 56 

Details

21</h3>21</h3>

22 22 

23| Raccourci | Description | Contexte |23| Raccourci | Description | Contexte |

24| :-------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |24| :-------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

25| `Ctrl+C` | Interrompre ou effacer l'entrée | Interrompt une opération en cours. Si rien ne s'exécute, la première pression efface l'entrée du prompt et une deuxième pression quitte Claude Code |25| `Ctrl+C` | Interrompre ou effacer l'entrée | Interrompt une opération en cours. Si rien ne s'exécute, la première pression efface l'entrée du prompt et une deuxième pression quitte Claude Code |

26| `Ctrl+X Ctrl+K` | Arrêter tous les [sous-agents en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) dans cette session et désactiver les [réponses automatiques des artefacts](/docs/fr/artifacts#let-claude-reply-to-comments-on-its-own) pour le reste de celle-ci. Appuyez deux fois dans les 3 secondes pour confirmer | Contrôle des sous-agents |26| `Ctrl+X Ctrl+K` | Arrêter tous les [sous-agents en arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) dans cette session et désactiver les [réponses automatiques des artefacts](/docs/fr/artifacts#let-claude-reply-to-comments-on-its-own) pour le reste de celle-ci. Appuyez deux fois dans les 3 secondes pour confirmer | Contrôle des sous-agents |

27| `Ctrl+D` | Quitter la session Claude Code | La première pression affiche un indice de confirmation et une deuxième pression dans les 800 ms quitte. Lorsque le prompt contient du texte, `Ctrl+D` supprime le caractère après le curseur à la place |27| `Ctrl+D` | Quitter la session Claude Code | La première pression affiche un indice de confirmation et une deuxième pression dans les 800 ms quitte. Lorsque le prompt contient du texte, `Ctrl+D` supprime le caractère après le curseur à la place |


32| `Ctrl+V` ou `Cmd+V` (iTerm2) ou `Alt+V` (Windows et WSL) | Coller une image du presse-papiers | Insère une puce `[Image #N]` au curseur pour que vous puissiez la référencer positionnellement dans votre prompt. Sur WSL, `Ctrl+V` et `Alt+V` sont tous deux liés ; utilisez `Alt+V` si votre terminal intercepte `Ctrl+V` |32| `Ctrl+V` ou `Cmd+V` (iTerm2) ou `Alt+V` (Windows et WSL) | Coller une image du presse-papiers | Insère une puce `[Image #N]` au curseur pour que vous puissiez la référencer positionnellement dans votre prompt. Sur WSL, `Ctrl+V` et `Alt+V` sont tous deux liés ; utilisez `Alt+V` si votre terminal intercepte `Ctrl+V` |

33| `Ctrl+B` | Tâches en arrière-plan | Met en arrière-plan les commandes Bash et les agents. Les utilisateurs de Tmux appuient deux fois |33| `Ctrl+B` | Tâches en arrière-plan | Met en arrière-plan les commandes Bash et les agents. Les utilisateurs de Tmux appuient deux fois |

34| `Ctrl+T` | Basculer la liste de contrôle des tâches de Claude | Afficher ou masquer la [liste de contrôle à faire de Claude](#task-list) dans la zone d'état. Ce n'est pas la vue des tâches en arrière-plan ; utilisez [`/tasks`](/docs/fr/commands) pour voir les shells et sous-agents en cours d'exécution |34| `Ctrl+T` | Basculer la liste de contrôle des tâches de Claude | Afficher ou masquer la [liste de contrôle à faire de Claude](#task-list) dans la zone d'état. Ce n'est pas la vue des tâches en arrière-plan ; utilisez [`/tasks`](/docs/fr/commands) pour voir les shells et sous-agents en cours d'exécution |

35| `Ctrl+S` | Ranger ou restaurer le prompt | Avec du texte dans l'entrée, le range et efface le prompt. Appuyé à nouveau sur un prompt vide, restaure le texte rangé, la position du curseur et le contenu collé |35| `Ctrl+S` | Ranger ou restaurer le prompt | Avec du texte dans l'entrée, le range et efface le prompt. Appuyé à nouveau sur un prompt vide, restaure le texte rangé, la position du curseur, le contenu collé et le mode d'entrée, donc une commande shell rangée `!` [shell](#shell-mode-with-prefix) revient en mode shell |

36| `Ctrl+Z` | Suspendre Claude Code | Unix uniquement. Suspend le processus vers votre shell ; exécutez `fg` pour reprendre |36| `Ctrl+Z` | Suspendre Claude Code | Unix uniquement. Suspend le processus vers votre shell ; exécutez `fg` pour reprendre |

37| `Flèches Gauche/Droite` | Parcourir les onglets de dialogue | Naviguez entre les onglets dans les dialogues de permission et les menus |37| `Flèches Gauche/Droite` | Parcourir les onglets de dialogue | Naviguez entre les onglets dans les dialogues de permission et les menus |

38| `Tab` | Accepter une suggestion d'autocomplétion ou ajouter un commentaire à une réponse de permission | Pendant que les suggestions d'autocomplétion s'affichent dans l'entrée du prompt, accepte la suggestion sélectionnée. Sur la plupart des prompts de permission, avec **Oui** ou **Non** en focus, ouvre un champ de commentaire sur cette option, et l'appuyer à nouveau ferme le champ. Consultez [ajouter un commentaire lorsque vous répondez à un prompt de permission](/docs/fr/permissions#add-a-comment-when-you-answer-a-permission-prompt) |38| `Tab` | Accepter une suggestion d'autocomplétion ou ajouter un commentaire à une réponse de permission | Pendant que les suggestions d'autocomplétion s'affichent dans l'entrée du prompt, accepte la suggestion sélectionnée. Sur la plupart des prompts de permission, avec **Oui** ou **Non** en focus, ouvre un champ de commentaire sur cette option, et l'appuyer à nouveau ferme le champ. Consultez [ajouter un commentaire lorsque vous répondez à un prompt de permission](/docs/fr/permissions#add-a-comment-when-you-answer-a-permission-prompt) |

39| `Flèches Haut/Bas` ou `Ctrl+P`/`Ctrl+N` | Déplacer le curseur ou naviguer dans l'historique des commandes | Lorsque l'entrée s'étend sur plus d'une ligne visuelle, qu'elle soit enveloppée ou multiligne, déplace d'abord le curseur dans le prompt. Une fois que le curseur est sur la première ou la dernière ligne visuelle, appuyer à nouveau navigue dans l'historique des commandes. Pendant que vous avez des messages en attente, `Haut` à partir de la première ligne [les reprend à la place](#take-back-what-you-queued) |39| `Flèches Haut/Bas` ou `Ctrl+P`/`Ctrl+N` | Déplacer le curseur ou naviguer dans l'historique des commandes | Lorsque l'entrée s'étend sur plus d'une ligne visuelle, qu'elle soit enveloppée ou multiligne, déplace d'abord le curseur dans le prompt. Une fois que le curseur est sur la première ou la dernière ligne visuelle, appuyer à nouveau navigue dans l'historique des commandes. Pendant que vous avez des messages en attente, `Haut` à partir de la première ligne [les reprend à la place](#take-back-what-you-queued) |

40| `Esc` | Interrompre Claude ou fermer un dialogue | Arrêtez la réponse actuelle ou l'appel d'outil au milieu du tour pour que vous puissiez rediriger. Claude conserve le travail effectué jusqu'à présent. Si vous avez des [messages en attente](#queue-messages-while-claude-works), Claude Code les envoie ensuite. Lorsqu'un dialogue est ouvert, `Esc` ferme le dialogue. Sur un prompt de permission, `Esc` refuse l'action, comme [**Non** sans commentaire](/docs/fr/permissions#add-a-comment-when-you-answer-a-permission-prompt) |40| `Esc` | Interrompre Claude ou fermer un dialogue | Arrêtez la réponse actuelle ou l'appel d'outil au milieu du tour pour que vous puissiez rediriger. Claude conserve le travail effectué jusqu'à présent. Si vous avez des [messages en attente](#queue-messages-while-claude-works), Claude Code les envoie ensuite. Lorsqu'un dialogue est ouvert, `Esc` ferme le dialogue. Sur un prompt de permission, `Esc` refuse l'action, comme [**Non** sans commentaire](/docs/fr/permissions#add-a-comment-when-you-answer-a-permission-prompt) |

41| `Esc` + `Esc` | Effacer le brouillon d'entrée ou rembobiner | Lorsque l'entrée du prompt contient du texte, double `Esc` l'efface et enregistre le brouillon dans l'historique pour que `Haut` le rappelle. Lorsque l'entrée est vide, double `Esc` ouvre le [menu de rembobinage](/docs/fr/checkpointing) pour restaurer ou résumer le code et la conversation à partir d'un point antérieur |41| `Esc` + `Esc` | Effacer le brouillon d'entrée ou rembobiner | Lorsque l'entrée du prompt contient du texte, double `Esc` l'efface et enregistre le brouillon dans l'historique pour que `Haut` le rappelle. Lorsque l'entrée est vide, double `Esc` ouvre le [menu de rembobinage](/docs/fr/checkpointing) pour restaurer ou résumer le code et la conversation à partir d'un point antérieur |

42| `Ctrl+Entrée` ou `Ctrl+X Ctrl+S` | Envoyer les messages en attente maintenant | Interrompt le tour actuel pour que vos [messages en attente](#queue-messages-while-claude-works) et votre brouillon avec eux sortent immédiatement au lieu d'attendre la fin du tour. En [mode shell](#shell-mode-with-prefix), la touche met en attente votre commande sans interrompre. Dans les terminaux qui ne signalent pas les touches étendues, `Ctrl+Entrée` arrive sous la forme d'une simple `Entrée` ; `Ctrl+X Ctrl+S` fonctionne dans n'importe quel terminal. Nécessite Claude Code v2.1.275 ou version ultérieure |42| `Ctrl+Entrée` ou `Ctrl+X Ctrl+S` | Envoyer les messages en attente maintenant | Envoie vos [messages en attente](#queue-messages-while-claude-works) et votre brouillon avec eux, immédiatement. [Quand Claude Code envoie ce que vous avez mis en attente](#when-claude-code-sends-what-you-queued) couvre ce qui se passe au tour sur lequel Claude travaille. En [mode shell](#shell-mode-with-prefix), la touche met en attente votre commande uniquement. Dans les terminaux qui ne signalent pas les touches étendues, `Ctrl+Entrée` arrive sous la forme d'une simple `Entrée` ; `Ctrl+X Ctrl+S` fonctionne dans n'importe quel terminal. Nécessite Claude Code v2.1.275 ou version ultérieure |

43| `Shift+Tab`, ou `Alt+M` sur Windows lorsque le runtime Node ou Bun n'active pas le mode d'entrée VT | Parcourir les modes de permission | Parcourez `default` (étiqueté Manuel dans l'indicateur de mode), `acceptEdits`, `plan`, et, le cas échéant, `bypassPermissions` puis `auto`. À partir de `auto`, la première pression bascule vers `default`. Consultez [modes de permission](/docs/fr/permission-modes). Sur un prompt de permission de fichier, la même touche ferme un [champ de commentaire](/docs/fr/permissions#add-a-comment-when-you-answer-a-permission-prompt) ouvert. Sans champ ouvert, il sélectionne l'option qui autorise l'action pour le reste de la session, lorsque le prompt offre cette option |43| `Shift+Tab`, ou `Alt+M` sur Windows lorsque le runtime Node ou Bun n'active pas le mode d'entrée VT | Parcourir les modes de permission | Parcourez `default` (étiqueté Manuel dans l'indicateur de mode), `acceptEdits`, `plan`, et, le cas échéant, `bypassPermissions` puis `auto`. À partir de `auto`, la première pression bascule vers `default`. Consultez [modes de permission](/docs/fr/permission-modes). Sur un prompt de permission de fichier, la même touche ferme un [champ de commentaire](/docs/fr/permissions#add-a-comment-when-you-answer-a-permission-prompt) ouvert. Sans champ ouvert, il sélectionne l'option qui autorise l'action pour le reste de la session, lorsque le prompt offre cette option |

44| `Option+P` (macOS) ou `Alt+P` (Windows/Linux) | Changer de modèle | Changez de modèles sans effacer votre prompt |44| `Option+P` (macOS) ou `Alt+P` (Windows/Linux) | Changer de modèle | Changez de modèles sans effacer votre prompt |

45| `Option+T` (macOS) ou `Alt+T` (Windows/Linux) | Basculer la réflexion étendue | Activez ou désactivez le mode de réflexion étendue. N'a aucun effet sur Opus 5.5 ou les modèles Fable, qui utilisent toujours la réflexion étendue. Fonctionne sur macOS sans configurer Option en tant que Meta |45| `Option+T` (macOS) ou `Alt+T` (Windows/Linux) | Basculer la réflexion étendue | Activez ou désactivez le mode de réflexion étendue. N'a aucun effet sur Opus 5.5 ou les modèles Fable, qui utilisent toujours la réflexion étendue. Fonctionne sur macOS sans configurer Option en tant que Meta |


136 Commandes136 Commandes

137</h2>137</h2>

138 138 

139Tapez `/` dans Claude Code pour voir les commandes disponibles, ou tapez `/` suivi de n'importe quelles lettres pour filtrer. Le menu `/` répertorie les commandes intégrées, les [compétences](/docs/fr/skills) créées par les utilisateurs et groupées, ainsi que les commandes contribuées par les [plugins](/docs/fr/plugins) et les [serveurs MCP](/docs/fr/mcp#use-mcp-prompts-as-commands). Toutes les commandes intégrées ne sont pas visibles pour chaque utilisateur, car certaines dépendent de votre plateforme ou de votre plan, et [quelques commandes disponibles sont masquées du menu par conception](/docs/fr/commands#how-the-command-menu-matches-what-you-type) et s'exécutent lorsque vous tapez leur nom complet.139Tapez `/` dans Claude Code pour voir les commandes disponibles, ou tapez `/` suivi de n'importe quelles lettres pour filtrer. Le menu `/` répertorie les commandes intégrées, les [compétences](/docs/fr/skills) créées par les utilisateurs et groupées, ainsi que les commandes contribuées par les [plugins](/docs/fr/plugins/overview) et les [serveurs MCP](/docs/fr/mcp#use-mcp-prompts-as-commands). Toutes les commandes intégrées ne sont pas visibles pour chaque utilisateur, car certaines dépendent de votre plateforme ou de votre plan, et [quelques commandes disponibles sont masquées du menu par conception](/docs/fr/commands#how-the-command-menu-matches-what-you-type) et s'exécutent lorsque vous tapez leur nom complet.

140 140 

141Dans le [rendu en plein écran](/docs/fr/fullscreen#use-the-mouse), la liste des commandes `/` et des suggestions de fichiers `@` répondent également à la souris : le survol met en évidence une ligne et le clic l'accepte.141Dans le [rendu en plein écran](/docs/fr/fullscreen#use-the-mouse), la liste des commandes `/` et des suggestions de fichiers `@` répondent également à la souris : le survol met en évidence une ligne et le clic l'accepte.

142 142 


408* Messages : si vous mettez un message en file d'attente pendant que Claude exécute des appels d'outils, Claude Code le transmet à Claude dès que ces appels d'outils se terminent, dans le même tour. Quand le tour se termine avec des messages toujours en attente, ils s'envoient sans une autre pression de touche, dans l'ordre où vous les avez tapés408* Messages : si vous mettez un message en file d'attente pendant que Claude exécute des appels d'outils, Claude Code le transmet à Claude dès que ces appels d'outils se terminent, dans le même tour. Quand le tour se termine avec des messages toujours en attente, ils s'envoient sans une autre pression de touche, dans l'ordre où vous les avez tapés

409* Commandes et commandes shell : Claude Code les conserve jusqu'à la fin du tour, puis les exécute une à une, en conservant l'ordre dans lequel vous les avez mises en file d'attente409* Commandes et commandes shell : Claude Code les conserve jusqu'à la fin du tour, puis les exécute une à une, en conservant l'ordre dans lequel vous les avez mises en file d'attente

410 410 

411Pour envoyer ce que vous avez mis en file d'attente sans attendre la fin du tour, appuyez sur `Ctrl+Entrée`. Claude Code interrompt le tour, et vos messages en attente s'envoient immédiatement, avec votre brouillon mis en file d'attente derrière eux si vous en aviez tapé un. En [mode shell](#shell-mode-with-prefix), la touche met votre commande en file d'attente sans interrompre le tour. Nécessite Claude Code v2.1.275 ou ultérieur.411Pour envoyer ce que vous avez mis en file d'attente sans attendre, appuyez sur `Ctrl+Entrée`. Vos messages en attente s'envoient immédiatement, avec votre brouillon mis en file d'attente derrière eux si vous en aviez tapé un. Nécessite Claude Code v2.1.275 ou ultérieur.

412 412 

413Dans les terminaux qui ne signalent pas les touches étendues, `Ctrl+Entrée` arrive comme un simple `Entrée` et met le brouillon en file d'attente à la place ; `Ctrl+X Ctrl+S` fonctionne dans n'importe quel terminal. Les deux touches sont des liaisons de l'action [`chat:sendNow`](/docs/fr/keybindings#chat-actions).413Si vous aviez mis en file d'attente une commande shell `!` avant vos messages, la touche interrompt le tour. Sinon, ce qui se passe au tour dépend de ce que Claude fait quand vous appuyez sur la touche :

414 

415* Exécution de commandes shell, de sous-agents ou d'autres travaux qui peuvent passer à l'[arrière-plan](#background-bash-commands) : ce travail passe à l'arrière-plan et continue de s'exécuter, et Claude lit vos messages dans le même tour

416* Uniquement l'écriture d'une réponse, ou l'exécution de quelque chose qui ne peut pas passer à l'arrière-plan : Claude Code interrompt le tour et envoie vos messages ensuite. Avant v2.1.281, la touche interrompait le tour dans les deux cas

417 

418En [mode shell](#shell-mode-with-prefix), la touche met uniquement votre commande en file d'attente. Dans les terminaux qui ne signalent pas les touches étendues, `Ctrl+Entrée` arrive comme un simple `Entrée` et met le brouillon en file d'attente à la place ; `Ctrl+X Ctrl+S` fonctionne dans n'importe quel terminal. Les deux touches sont des liaisons de l'action [`chat:sendNow`](/docs/fr/keybindings#chat-actions).

414 419 

415Appuyez sur `Échap` pour interrompre le tour sans soumettre votre brouillon. Claude Code conserve ce que vous avez mis en file d'attente et l'envoie immédiatement.420Appuyez sur `Échap` pour interrompre le tour sans soumettre votre brouillon. Claude Code conserve ce que vous avez mis en file d'attente et l'envoie immédiatement.

416 421 

keybindings.md +18 −2

Details

112Actions disponibles dans le contexte `Chat` :112Actions disponibles dans le contexte `Chat` :

113 113 

114| Action | Par défaut | Description |114| Action | Par défaut | Description |

115| :-------------------- | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |115| :-------------------- | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

116| `chat:cancel` | Échappement | Annuler l'entrée actuelle |116| `chat:cancel` | Échappement | Annuler l'entrée actuelle |

117| `chat:clearInput` | Ctrl+L | Forcer un redessinage complet de l'écran, en préservant l'entrée et la conversation |117| `chat:clearInput` | Ctrl+L | Forcer un redessinage complet de l'écran, en préservant l'entrée et la conversation |

118| `chat:clearScreen` | Cmd+K | Identique à `chat:clearInput`. Voir [Effacer la conversation](/docs/fr/fullscreen#clear-the-conversation) pour savoir comment Cmd+K se comporte sur iTerm2 et Terminal.app |118| `chat:clearScreen` | Cmd+K | Identique à `chat:clearInput`. Voir [Effacer la conversation](/docs/fr/fullscreen#clear-the-conversation) pour savoir comment Cmd+K se comporte sur iTerm2 et Terminal.app |


123| `chat:thinkingToggle` | Meta+T | Basculer la réflexion étendue |123| `chat:thinkingToggle` | Meta+T | Basculer la réflexion étendue |

124| `chat:submit` | Entrée | Soumettre le message |124| `chat:submit` | Entrée | Soumettre le message |

125| `chat:queueSubmit` | Ctrl+X Entrée | Soumettre le message, marqué pour attendre son tour : pendant que Claude travaille, Claude Code [le met en file d'attente](/docs/fr/interactive-mode#queue-messages-while-claude-works) et n'interrompt jamais le tour. Contrairement à `chat:submit`, il soumet le brouillon même si une suggestion d'autocomplétion est en surbrillance. Nécessite v2.1.247 ou ultérieure |125| `chat:queueSubmit` | Ctrl+X Entrée | Soumettre le message, marqué pour attendre son tour : pendant que Claude travaille, Claude Code [le met en file d'attente](/docs/fr/interactive-mode#queue-messages-while-claude-works) et n'interrompt jamais le tour. Contrairement à `chat:submit`, il soumet le brouillon même si une suggestion d'autocomplétion est en surbrillance. Nécessite v2.1.247 ou ultérieure |

126| `chat:sendNow` | Ctrl+Entrée, Ctrl+X Ctrl+S | Interrompre le tour en cours pour que vos [messages en file d'attente](/docs/fr/interactive-mode#queue-messages-while-claude-works) et votre brouillon avec eux sortent immédiatement. Quand rien ne s'exécute, il soumet le brouillon, et en [mode shell](/docs/fr/interactive-mode#shell-mode-with-prefix) il met la commande en file d'attente sans interrompre. Les terminaux qui ne signalent pas les touches étendues livrent `Ctrl+Entrée` comme simple `Entrée`, donc `Ctrl+X Ctrl+S` est la liaison qui fonctionne dans n'importe quel terminal. Nécessite v2.1.275 ou ultérieure |126| `chat:sendNow` | Ctrl+Entrée, Ctrl+X Ctrl+S | Envoyer vos [messages en file d'attente](/docs/fr/interactive-mode#queue-messages-while-claude-works) et votre brouillon avec eux immédiatement. [Quand Claude Code envoie ce que vous avez mis en file d'attente](/docs/fr/interactive-mode#when-claude-code-sends-what-you-queued) couvre ce qui se passe au tour sur lequel Claude travaille. Quand rien ne s'exécute, la touche soumet le brouillon, et en [mode shell](/docs/fr/interactive-mode#shell-mode-with-prefix) elle met uniquement la commande en file d'attente. Les terminaux qui ne signalent pas les touches étendues livrent `Ctrl+Entrée` comme simple `Entrée`, donc `Ctrl+X Ctrl+S` est la liaison qui fonctionne dans n'importe quel terminal. Nécessite v2.1.275 ou ultérieure |

127| `chat:newline` | Ctrl+J | Insérer une nouvelle ligne sans soumettre |127| `chat:newline` | Ctrl+J | Insérer une nouvelle ligne sans soumettre |

128| `chat:undo` | Ctrl+\_, Ctrl+Maj+- | Annuler la dernière action |128| `chat:undo` | Ctrl+\_, Ctrl+Maj+- | Annuler la dernière action |

129| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Ouvrir dans un éditeur externe. La [saisie de dispatch de la vue agent](/docs/fr/agent-view#keyboard-shortcuts) suit également les liaisons à un seul trait de ce raccourci |129| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Ouvrir dans un éditeur externe. La [saisie de dispatch de la vue agent](/docs/fr/agent-view#keyboard-shortcuts) suit également les liaisons à un seul trait de ce raccourci |


184}184}

185```185```

186 186 

187Avec ces liaisons, `y` et `n` tapent toujours comme des lettres pendant qu'un [champ de texte](#text-fields) a le focus.

188 

187Avant v2.1.280, `y` était également lié à `confirm:yes` et `n` à `confirm:no` par défaut. Si vous avez créé votre `keybindings.json` avec `/keybindings` avant v2.1.280, le fichier liste les deux liaisons et elles restent en vigueur jusqu'à ce que vous supprimiez ces deux lignes.189Avant v2.1.280, `y` était également lié à `confirm:yes` et `n` à `confirm:no` par défaut. Si vous avez créé votre `keybindings.json` avec `/keybindings` avant v2.1.280, le fichier liste les deux liaisons et elles restent en vigueur jusqu'à ce que vous supprimiez ces deux lignes.

188 190 

189<h3 id="permission-actions">191<h3 id="permission-actions">


634| Ctrl+A | Préfixe GNU screen |636| Ctrl+A | Préfixe GNU screen |

635| Ctrl+Z | Suspension de processus Unix (SIGTSTP) |637| Ctrl+Z | Suspension de processus Unix (SIGTSTP) |

636 638 

639<h2 id="text-fields">

640 Champs de texte

641</h2>

642 

643Si vous liez une lettre, un chiffre ou une Espace nue, vous pouvez toujours taper ce caractère dans un champ de texte à l'intérieur d'une boîte de dialogue ou d'un panneau. L'un de ces champs est la réponse « Autre » à une question que Claude pose. Tant que le champ a le focus, une touche imprimable que vous appuyez sans Ctrl, Alt ou Cmd va au champ, et Claude Code ne la fait pas correspondre à vos liaisons.

644 

645Ces touches exécutent toujours leurs liaisons tant que le champ a le focus :

646 

647* Les touches qui ne tapent pas un caractère, telles que Entrée, Échap, Tab et les touches fléchées

648* N'importe quelle touche appuyée avec Ctrl, Alt ou Cmd

649* La deuxième frappe d'un [accord](#chords) déjà en cours

650 

651À l'invite principale, Claude Code fait correspondre chaque touche aux contextes actifs, tels que `Chat`, et tape la touche uniquement quand aucune liaison ne la prend.

652 

637<h2 id="vim-mode-interaction">653<h2 id="vim-mode-interaction">

638 Interaction du mode Vim654 Interaction du mode Vim

639</h2>655</h2>

Details

202 Réduire les lectures de fichiers avec l'intelligence du code202 Réduire les lectures de fichiers avec l'intelligence du code

203</h3>203</h3>

204 204 

205Dans un grand dépôt de code, trouver où un symbole est défini ou utilisé peut coûter de nombreuses lectures de fichiers et appels grep. Les [plugins d'intelligence du code](/docs/fr/discover-plugins#code-intelligence) connectent Claude à un serveur de langage afin qu'il puisse sauter aux définitions, trouver des références et afficher les erreurs de type directement au lieu de scanner l'arbre.205Dans un grand dépôt de code, trouver où un symbole est défini ou utilisé peut coûter de nombreuses lectures de fichiers et appels grep. Les [plugins d'intelligence du code](/docs/fr/plugins/code-intelligence) connectent Claude à un serveur de langage afin qu'il puisse sauter aux définitions, trouver des références et afficher les erreurs de type directement au lieu de scanner l'arbre.

206 206 

207La marketplace officielle a des plugins pour TypeScript, Python, Go, Rust et d'autres langages courants. Exécutez la commande ci-dessous à l'intérieur d'une session Claude Code pour installer le plugin TypeScript :207La marketplace officielle a des plugins pour TypeScript, Python, Go, Rust et d'autres langages courants. Exécutez la commande ci-dessous à l'intérieur d'une session Claude Code pour installer le plugin TypeScript :

208 208 


213Si l'installation échoue, faites correspondre le message que Claude Code rapporte :213Si l'installation échoue, faites correspondre le message que Claude Code rapporte :

214 214 

215* `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.215* `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

216* Le plugin [n'est pas trouvé dans la marketplace](/docs/fr/discover-plugins#install-plugins) : vérifiez le nom du plugin.216* Le plugin [n'est pas trouvé dans la marketplace](/docs/fr/plugins/install#install-a-plugin) : vérifiez le nom du plugin.

217 217 

218Pour activer un plugin pour tous ceux du référentiel plutôt que de l'installer vous-même, ajoutez-le au paramètre de projet [`enabledPlugins`](/docs/fr/settings-reference#plugin-settings).218Pour activer un plugin pour tous ceux du référentiel plutôt que de l'installer vous-même, ajoutez-le au paramètre de projet [`enabledPlugins`](/docs/fr/settings-reference#plugin-settings).

219 219 

220Les plugins d'intelligence du code nécessitent le binaire du serveur de langage de la langue sur la machine de chaque développeur. Voir [quel binaire chaque langue nécessite](/docs/fr/discover-plugins#code-intelligence). L'installation à partir de la marketplace officielle nécessite un accès réseau à GitHub, où la marketplace est hébergée. Sur un réseau restreint, [ajoutez la marketplace à partir d'un hôte Git interne ou d'un chemin local](/docs/fr/discover-plugins#add-from-other-git-hosts) à la place.220Les plugins d'intelligence du code nécessitent le binaire du serveur de langage de la langue sur la machine de chaque développeur. Voir [quel binaire chaque langue nécessite](/docs/fr/plugins/code-intelligence). L'installation à partir de la marketplace officielle nécessite un accès réseau à GitHub, où la marketplace est hébergée. Sur un réseau restreint, [ajoutez la marketplace à partir d'un hôte Git interne ou d'un chemin local](/docs/fr/plugins/install#add-a-marketplace) à la place.

221 221 

222Cela s'associe bien avec `claudeMdExcludes` et les règles `Read` deny ci-dessus. Ceux-ci gardent le contenu non pertinent en dehors du contexte, et l'intelligence du code empêche Claude de lire ce qui reste pour localiser une définition.222Cela s'associe bien avec `claudeMdExcludes` et les règles `Read` deny ci-dessus. Ceux-ci gardent le contenu non pertinent en dehors du contexte, et l'intelligence du code empêche Claude de lire ce qui reste pour localiser une définition.

223 223 


395 395 

396Les noms se chargent toujours, mais [lorsqu'il y en a beaucoup, certains skills perdent entièrement leurs descriptions](/docs/fr/skills#skill-descriptions-are-cut-short), ce qui peut supprimer les mots-clés que Claude utilise pour décider si un skill s'applique. Gardez les descriptions courtes et commencez par les mots qu'une demande contiendrait, comme « écrire ou modifier les tests dans `packages/api/` ».396Les noms se chargent toujours, mais [lorsqu'il y en a beaucoup, certains skills perdent entièrement leurs descriptions](/docs/fr/skills#skill-descriptions-are-cut-short), ce qui peut supprimer les mots-clés que Claude utilise pour décider si un skill s'applique. Gardez les descriptions courtes et commencez par les mots qu'une demande contiendrait, comme « écrire ou modifier les tests dans `packages/api/` ».

397 397 

398Pour les skills que de nombreux répertoires partagent, comme les conventions PR ou une liste de contrôle de déploiement, placez-les dans le `.claude/skills/` de la racine du référentiel afin qu'ils se chargent à partir de n'importe quel répertoire de démarrage. Lorsque les skills partagés ont besoin de leur propre historique de version ou doivent fonctionner entre les référentiels, empaquetez-les en tant que [plugin](/docs/fr/plugins) à la place. Les skills de plugin utilisent un espace de noms `plugin-name:skill-name`, donc ils ne collisionnent jamais avec les skills par répertoire. Une équipe de plateforme peut les versionner et les mettre à jour au même endroit.398Pour les skills que de nombreux répertoires partagent, comme les conventions PR ou une liste de contrôle de déploiement, placez-les dans le `.claude/skills/` de la racine du référentiel afin qu'ils se chargent à partir de n'importe quel répertoire de démarrage. Lorsque les skills partagés ont besoin de leur propre historique de version ou doivent fonctionner entre les référentiels, empaquetez-les en tant que [plugin](/docs/fr/plugins/overview) à la place. Les skills de plugin utilisent un espace de noms `plugin-name:skill-name`, donc ils ne collisionnent jamais avec les skills par répertoire. Une équipe de plateforme peut les versionner et les mettre à jour au même endroit.

399 399 

400Pour trouver quels skills restent inutilisés, activez l'exportateur OpenTelemetry [logs](/docs/fr/monitoring-usage) et définissez `OTEL_LOG_TOOL_DETAILS=1` afin que les noms de skills soient enregistrés textuellement au lieu d'être masqués. L'événement [`skill_activated`](/docs/fr/monitoring-usage#skill-activated-event) enregistre chaque invocation dans son attribut `skill.name`, et `invocation_trigger` enregistre si une commande, Claude ou un skill imbriqué l'a invoqué, ce qui vous dit quoi consolider ou retirer.400Pour trouver quels skills restent inutilisés, activez l'exportateur OpenTelemetry [logs](/docs/fr/monitoring-usage) et définissez `OTEL_LOG_TOOL_DETAILS=1` afin que les noms de skills soient enregistrés textuellement au lieu d'être masqués. L'événement [`skill_activated`](/docs/fr/monitoring-usage#skill-activated-event) enregistre chaque invocation dans son attribut `skill.name`, et `invocation_trigger` enregistre si une commande, Claude ou un skill imbriqué l'a invoqué, ce qui vous dit quoi consolider ou retirer.

401 401 


408Déplacez les conventions et le contenu de référence en dehors du CLAUDE.md toujours chargé et dans les mécanismes qui se chargent à la demande :408Déplacez les conventions et le contenu de référence en dehors du CLAUDE.md toujours chargé et dans les mécanismes qui se chargent à la demande :

409 409 

410* [Skills](/docs/fr/skills) : matériel de référence que Claude charge uniquement lorsqu'il est pertinent pour la tâche410* [Skills](/docs/fr/skills) : matériel de référence que Claude charge uniquement lorsqu'il est pertinent pour la tâche

411* [Plugins](/docs/fr/plugins) : bundles versionnés de skills, hooks et commandes qu'une équipe de plateforme possède centralement411* [Plugins](/docs/fr/plugins/overview) : bundles versionnés de skills, hooks et commandes qu'une équipe de plateforme possède centralement

412* [Serveurs MCP](/docs/fr/mcp) : si votre organisation exécute déjà une recherche de code ou un index RAG sur le référentiel, exposez-le en tant qu'outil MCP afin que Claude l'interroge au lieu de lire les fichiers directement412* [Serveurs MCP](/docs/fr/mcp) : si votre organisation exécute déjà une recherche de code ou un index RAG sur le référentiel, exposez-le en tant qu'outil MCP afin que Claude l'interroge au lieu de lire les fichiers directement

413 413 

414Voir [paramètres gérés par serveur ou gérés par endpoint](/docs/fr/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings) pour la façon dont les équipes de plateforme peuvent les appliquer centralement.414Voir [paramètres gérés par serveur ou gérés par endpoint](/docs/fr/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings) pour la façon dont les équipes de plateforme peuvent les appliquer centralement.

managed-mcp.md +1 −1

Details

41| **Aucune restriction** | Les utilisateurs ajoutent n'importe quoi | Ne déployez aucune configuration MCP gérée |41| **Aucune restriction** | Les utilisateurs ajoutent n'importe quoi | Ne déployez aucune configuration MCP gérée |

42 42 

43<Note>43<Note>

44 Claude Code n'a pas de registre de serveur MCP intégré que les utilisateurs peuvent parcourir et installer. Pour le modèle de catalogue approuvé, partagez la liste approuvée et ses commandes `claude mcp add` quelque part où vos utilisateurs les trouveront, comme un wiki interne, ou distribuez les serveurs en tant que plugins via une [place de marché de plugins gérée](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) afin que les utilisateurs puissent les parcourir et les installer depuis `/plugin`.44 Claude Code n'a pas de registre de serveur MCP intégré que les utilisateurs peuvent parcourir et installer. Pour le modèle de catalogue approuvé, partagez la liste approuvée et ses commandes `claude mcp add` quelque part où vos utilisateurs les trouveront, comme un wiki interne, ou distribuez les serveurs en tant que plugins via une [place de marché de plugins gérée](/docs/fr/plugins/org#restrict-what-users-can-install) afin que les utilisateurs puissent les parcourir et les installer depuis `/plugin`.

45</Note>45</Note>

46 46 

47<h2 id="exclusive-control-with-managed-mcp-json">47<h2 id="exclusive-control-with-managed-mcp-json">

Details

95 * **Dans un sandbox VM complet** : quand votre configuration gérée Claude Desktop définit [`requireCoworkFullVmSandbox`](https://claude.com/docs/third-party/claude-desktop/configuration#requirecoworkfullvmsandbox), Claude Code s'exécute à l'intérieur d'une machine virtuelle où la politique MDM de l'appareil et le fichier de paramètres gérés ne sont pas présents.95 * **Dans un sandbox VM complet** : quand votre configuration gérée Claude Desktop définit [`requireCoworkFullVmSandbox`](https://claude.com/docs/third-party/claude-desktop/configuration#requirecoworkfullvmsandbox), Claude Code s'exécute à l'intérieur d'une machine virtuelle où la politique MDM de l'appareil et le fichier de paramètres gérés ne sont pas présents.

96 * **Sessions Cowork distantes** : celles-ci s'exécutent sur des machines virtuelles gérées par Anthropic, où Claude Code n'a pas de politique d'appareil à lire.96 * **Sessions Cowork distantes** : celles-ci s'exécutent sur des machines virtuelles gérées par Anthropic, où Claude Code n'a pas de politique d'appareil à lire.

97 97 

98 Où que la session s'exécute, claude.ai applique les listes [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) et [`blockedMarketplaces`](/docs/fr/settings-reference#blockedmarketplaces) de la console d'administration elle-même quand quelqu'un ajoute une marketplace à partir d'un référentiel git sur claude.ai ou à partir de **Personnaliser** dans l'onglet Cowork. [Comment fonctionnent les restrictions](/docs/fr/plugin-marketplaces#how-restrictions-work) décrit cette vérification. Le tableau [couverture de surface](/docs/fr/model-config#surface-coverage) compare Cowork avec les autres surfaces.98 Où que la session s'exécute, claude.ai applique les listes [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) et [`blockedMarketplaces`](/docs/fr/settings-reference#blockedmarketplaces) de la console d'administration elle-même quand quelqu'un ajoute une marketplace à partir d'un référentiel git sur claude.ai ou à partir de **Personnaliser** dans l'onglet Cowork. [Comment fonctionnent les restrictions](/docs/fr/plugins/org#restrict-what-users-can-install) décrit cette vérification. Le tableau [couverture de surface](/docs/fr/model-config#surface-coverage) compare Cowork avec les autres surfaces.

99* **Sessions en cours d'exécution** : la plupart des modifications atteignent une session en cours d'exécution selon le calendrier du tableau de [mécanisme de livraison](#choose-a-delivery-mechanism), sans redémarrage.99* **Sessions en cours d'exécution** : la plupart des modifications atteignent une session en cours d'exécution selon le calendrier du tableau de [mécanisme de livraison](#choose-a-delivery-mechanism), sans redémarrage.

100 * Les modifications apportées à [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh), [`requiredMinimumVersion`](/docs/fr/settings-reference#requiredminimumversion), et [certaines clés modifiables par l'utilisateur](/docs/fr/settings#when-edits-take-effect) prennent effet au prochain démarrage de session.100 * Les modifications apportées à [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh), [`requiredMinimumVersion`](/docs/fr/settings-reference#requiredminimumversion), et [certaines clés modifiables par l'utilisateur](/docs/fr/settings#when-edits-take-effect) prennent effet au prochain démarrage de session.

101 * Une entrée [`policyHelper`](/docs/fr/settings-reference#policyhelper) nouvelle ou modifiée prend effet au prochain lancement. Si les paramètres gérés par le serveur masquent l'assistant à ce lancement, l'assistant s'exécute dès qu'une récupération signale que ces paramètres ont été supprimés.101 * Une entrée [`policyHelper`](/docs/fr/settings-reference#policyhelper) nouvelle ou modifiée prend effet au prochain lancement. Si les paramètres gérés par le serveur masquent l'assistant à ce lancement, l'assistant s'exécute dès qu'une récupération signale que ces paramètres ont été supprimés.


256 256 

257 Sur Claude Code v2.1.273 ou ultérieur, pendant que `allowManagedMcpServersOnly` est actif, la liste `allowedMcpServers` de la source d'administration la mieux classée qui en définit une s'applique et bloque celle du parent, comme une [clé inter-source](#keys-read-from-every-admin-source). La liste du parent s'applique uniquement quand aucune source d'administration n'en définit une. L'entrée [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) dit quelle source fournit chaque clé sous `"merge"`. Avant v2.1.223, une valeur dans n'importe quelle source d'administration bloquait celle du parent257 Sur Claude Code v2.1.273 ou ultérieur, pendant que `allowManagedMcpServersOnly` est actif, la liste `allowedMcpServers` de la source d'administration la mieux classée qui en définit une s'applique et bloque celle du parent, comme une [clé inter-source](#keys-read-from-every-admin-source). La liste du parent s'applique uniquement quand aucune source d'administration n'en définit une. L'entrée [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) dit quelle source fournit chaque clé sous `"merge"`. Avant v2.1.223, une valeur dans n'importe quelle source d'administration bloquait celle du parent

258* Pour `availableModels`, Claude Code applique la valeur dans les paramètres gérés qu'il applique et bloque une liste fournie par le parent258* Pour `availableModels`, Claude Code applique la valeur dans les paramètres gérés qu'il applique et bloque une liste fournie par le parent

259* Pour `strictKnownMarketplaces`, Claude Code applique de la même manière la liste dans les paramètres gérés qu'il applique et bloque une liste fournie par le parent. La liste du parent s'applique uniquement quand aucune source gérée appliquée ne la définit. Nécessite Claude Code v2.1.282 ou ultérieur

260* Un `blockedMarketplaces` fourni par le parent s'applique en plus de toute liste de blocage qu'une source gérée définit. Nécessite Claude Code v2.1.282 ou ultérieur

259 261 

260<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">262<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">

261 Garder l'accès au dossier Cowork quand seules les règles gérées s'appliquent263 Garder l'accès au dossier Cowork quand seules les règles gérées s'appliquent


361Quelques clés d'application ne sont pas supprimées quand elles sont invalides. Claude Code applique un fallback plus strict jusqu'à ce que la valeur soit corrigée ; le tableau montre ce qu'il applique pour chaque clé :363Quelques clés d'application ne sont pas supprimées quand elles sont invalides. Claude Code applique un fallback plus strict jusqu'à ce que la valeur soit corrigée ; le tableau montre ce qu'il applique pour chaque clé :

362 364 

363| Champ | Comportement quand présent mais invalide |365| Champ | Comportement quand présent mais invalide |

364| :---------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |366| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

365| `allowedMcpServers` | Appliquée comme une liste d'autorisation vide jusqu'à ce que la valeur soit corrigée, donc aucun serveur MCP que les utilisateurs ajoutent n'est admis. Les serveurs que votre organisation livre via [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) se chargent toujours, et les serveurs `managed-mcp.json` se chargent selon [Comment un serveur est évalué](/docs/fr/managed-mcp#how-a-server-is-evaluated). Une entrée invalide individuelle est supprimée et le sous-ensemble valide est appliqué. |367| `allowedMcpServers` | Appliquée comme une liste d'autorisation vide jusqu'à ce que la valeur soit corrigée, donc aucun serveur MCP que les utilisateurs ajoutent n'est admis. Les serveurs que votre organisation livre via [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) se chargent toujours, et les serveurs `managed-mcp.json` se chargent selon [Comment un serveur est évalué](/docs/fr/managed-mcp#how-a-server-is-evaluated). Une entrée invalide individuelle est supprimée et le sous-ensemble valide est appliqué. |

366| `allowedHttpHookUrls` | Claude Code applique une [liste d'autorisation](/docs/fr/settings-reference#allowedhttphookurls) gérée vide jusqu'à ce que vous corrigiez la valeur, donc un hook HTTP s'exécute uniquement si un autre fichier de paramètres énumère son URL. Si seule une entrée individuelle est invalide, Claude Code supprime cette entrée et applique le reste. |368| `allowedHttpHookUrls` | Claude Code applique une [liste d'autorisation](/docs/fr/settings-reference#allowedhttphookurls) gérée vide jusqu'à ce que vous corrigiez la valeur, donc un hook HTTP s'exécute uniquement si un autre fichier de paramètres énumère son URL. Si seule une entrée individuelle est invalide, Claude Code supprime cette entrée et applique le reste. |

367| `httpHookAllowedEnvVars` | Claude Code applique une [liste d'autorisation](/docs/fr/settings-reference#httphookallowedenvvars) gérée vide jusqu'à ce que vous corrigiez la valeur, donc une variable d'en-tête est interpolée uniquement si un autre fichier de paramètres la nomme. Si seule une entrée individuelle est invalide, Claude Code supprime cette entrée et applique le reste. |369| `httpHookAllowedEnvVars` | Claude Code applique une [liste d'autorisation](/docs/fr/settings-reference#httphookallowedenvvars) gérée vide jusqu'à ce que vous corrigiez la valeur, donc une variable d'en-tête est interpolée uniquement si un autre fichier de paramètres la nomme. Si seule une entrée individuelle est invalide, Claude Code supprime cette entrée et applique le reste. |

368| `allowedChannelPlugins` | Claude Code applique une liste d'autorisation vide jusqu'à ce que vous corrigiez la valeur, donc aucun plugin de canal passé à `--channels` n'est admis. Si seule une entrée individuelle est invalide, il supprime cette entrée et applique le reste. |370| `allowedChannelPlugins` | Claude Code applique une liste d'autorisation vide jusqu'à ce que vous corrigiez la valeur, donc aucun plugin de canal passé à `--channels` n'est admis. Si seule une entrée individuelle est invalide, il supprime cette entrée et applique le reste. |

369| `strictKnownMarketplaces` | Appliquée comme une liste d'autorisation vide jusqu'à ce que la valeur soit corrigée, donc aucune [source de marketplace](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) n'est admise. Une entrée individuelle qui est invalide ou ne peut pas être appliquée, comme une regex `hostPattern` qui ne compile pas, est supprimée et le sous-ensemble valide est appliqué. |371| `strictKnownMarketplaces` | Appliquée comme une liste d'autorisation vide jusqu'à ce que la valeur soit corrigée, donc aucune [source de marketplace](/docs/fr/plugins/org#restrict-what-users-can-install) n'est admise. Une entrée individuelle qui est invalide ou ne peut pas être appliquée, comme une regex `hostPattern` qui ne compile pas, est supprimée et le sous-ensemble valide est appliqué. |

370| `allowManagedHooksOnly` | Traitée comme `true` jusqu'à correction : les [restrictions de hook](/docs/fr/settings-reference#allowmanagedhooksonly) s'appliquent et, à moins que `disableCommandPluginSources` ne soit explicitement `false`, les plugins sourced par commande sont désactivés. |372| `allowManagedHooksOnly` | Traitée comme `true` jusqu'à correction : les [restrictions de hook](/docs/fr/settings-reference#allowmanagedhooksonly) s'appliquent et, à moins que `disableCommandPluginSources` ne soit explicitement `false`, les plugins sourced par commande sont désactivés. |

371| `allowManagedMcpServersOnly` | Traitée comme `true`. |373| `allowManagedMcpServersOnly` | Traitée comme `true`. |

372| `disableCommandPluginSources` | Traitée comme `true`, donc les plugins sourced par commande restent désactivés jusqu'à ce que la valeur soit corrigée. |374| `disableCommandPluginSources` | Traitée comme `true`, donc les plugins sourced par commande restent désactivés jusqu'à ce que la valeur soit corrigée. |


378| `gatewayInternalNetworks` | Quand la valeur invalide provient de la source gérée la plus élevée sur la machine, `/login` refuse chaque nouvelle connexion [passerelle cloud](/docs/fr/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) sur cette machine jusqu'à ce que la valeur soit corrigée. |380| `gatewayInternalNetworks` | Quand la valeur invalide provient de la source gérée la plus élevée sur la machine, `/login` refuse chaque nouvelle connexion [passerelle cloud](/docs/fr/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) sur cette machine jusqu'à ce que la valeur soit corrigée. |

379| `crossSessionInbound` | Traitée comme `refuse`, la valeur la plus restrictive, donc les [messages inter-sessions](/docs/fr/cross-session-messaging#control-inbound-messages) entrants sont refusés jusqu'à ce que la valeur soit corrigée. Le développeur voit [un avertissement](/docs/fr/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |381| `crossSessionInbound` | Traitée comme `refuse`, la valeur la plus restrictive, donc les [messages inter-sessions](/docs/fr/cross-session-messaging#control-inbound-messages) entrants sont refusés jusqu'à ce que la valeur soit corrigée. Le développeur voit [un avertissement](/docs/fr/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |

380| `deniedMcpServers` | Une entrée invalide individuelle est supprimée et le sous-ensemble valide est appliqué. Une valeur entièrement invalide est supprimée avec un avertissement, car refuser chaque serveur bloquerait les serveurs que la politique n'a jamais nommés. |382| `deniedMcpServers` | Une entrée invalide individuelle est supprimée et le sous-ensemble valide est appliqué. Une valeur entièrement invalide est supprimée avec un avertissement, car refuser chaque serveur bloquerait les serveurs que la politique n'a jamais nommés. |

381| `blockedMarketplaces` | Une entrée invalide individuelle est supprimée et le sous-ensemble valide est appliqué. Une entrée qui analyse mais ne peut jamais correspondre, comme une regex `hostPattern` qui ne compile pas, est conservée avec un avertissement. Elle ne bloque rien jusqu'à correction, mais les [restrictions de marketplace](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) restent actives. Une valeur entièrement invalide est supprimée avec un avertissement, car bloquer chaque marketplace bloquerait les sources que la politique n'a jamais nommées. |383| `blockedMarketplaces` | Une entrée invalide individuelle est supprimée et le sous-ensemble valide est appliqué. Une entrée qui analyse mais ne peut jamais correspondre, comme une regex `hostPattern` qui ne compile pas, est conservée avec un avertissement. Elle ne bloque rien jusqu'à correction, mais les [restrictions de marketplace](/docs/fr/plugins/org#restrict-what-users-can-install) restent actives. Une valeur entièrement invalide est supprimée avec un avertissement, car bloquer chaque marketplace bloquerait les sources que la politique n'a jamais nommées. |

382| `sandbox.credentials` | Une entrée invalide récupérable est dégradée à `mode: "deny"` avec un avertissement ; une irrécupérable est supprimée ; les entrées valides restent appliquées. Consultez [entrées de credential invalides](/docs/fr/settings-reference#invalid-credential-entries-in-managed-settings) |384| `sandbox.credentials` | Une entrée invalide récupérable est dégradée à `mode: "deny"` avec un avertissement ; une irrécupérable est supprimée ; les entrées valides restent appliquées. Consultez [entrées de credential invalides](/docs/fr/settings-reference#invalid-credential-entries-in-managed-settings) |

383 385 

384`allowedHttpHookUrls` et `httpHookAllowedEnvVars` fusionnent entre les fichiers de paramètres, donc les entrées dans vos paramètres utilisateur, projet ou local s'appliquent toujours tandis que la liste gérée est vide.386`allowedHttpHookUrls` et `httpHookAllowedEnvVars` fusionnent entre les fichiers de paramètres, donc les entrées dans vos paramètres utilisateur, projet ou local s'appliquent toujours tandis que la liste gérée est vide.


402Le tableau couvre les contrôles de permission, plugin et livraison. Pour toute clé non énumérée ici, la colonne Scope de l'[index de référence des paramètres](/docs/fr/settings-reference#all-settings) dit si elle est gérée uniquement ; les clés gérées uniquement restantes là incluent l'URL de connexion à la passerelle, la version, le navigateur, le simulateur mobile, l'hôte SSH, la session locale Desktop, le chemin binaire sandbox, la tarification du modèle, et les contrôles CLAUDE.md.404Le tableau couvre les contrôles de permission, plugin et livraison. Pour toute clé non énumérée ici, la colonne Scope de l'[index de référence des paramètres](/docs/fr/settings-reference#all-settings) dit si elle est gérée uniquement ; les clés gérées uniquement restantes là incluent l'URL de connexion à la passerelle, la version, le navigateur, le simulateur mobile, l'hôte SSH, la session locale Desktop, le chemin binaire sandbox, la tarification du modèle, et les contrôles CLAUDE.md.

403 405 

404| Paramètre | Description |406| Paramètre | Description |

405| :-------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |407| :-------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

406| [`allowAllClaudeAiMcps`](/docs/fr/settings-reference#allowallclaudeaimcps) | Charger les connecteurs claude.ai que Claude Code récupère lui-même aux côtés d'un `managed-mcp.json` déployé au lieu de les supprimer |408| [`allowAllClaudeAiMcps`](/docs/fr/settings-reference#allowallclaudeaimcps) | Charger les connecteurs claude.ai que Claude Code récupère lui-même aux côtés d'un `managed-mcp.json` déployé au lieu de les supprimer |

407| [`allowedChannelPlugins`](/docs/fr/settings-reference#allowedchannelplugins) | Liste d'autorisation des plugins de canal qui peuvent pousser des messages. Remplace la liste d'autorisation Anthropic par défaut quand défini. Nécessite `channelsEnabled: true`. Consultez [Restreindre quels plugins de canal peuvent s'exécuter](/docs/fr/channels#restrict-which-channel-plugins-can-run) |409| [`allowedChannelPlugins`](/docs/fr/settings-reference#allowedchannelplugins) | Liste d'autorisation des plugins de canal qui peuvent pousser des messages. Remplace la liste d'autorisation Anthropic par défaut quand défini. Nécessite `channelsEnabled: true`. Consultez [Restreindre quels plugins de canal peuvent s'exécuter](/docs/fr/channels#restrict-which-channel-plugins-can-run) |

408| [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) | Quand `true`, restreint quels hooks s'exécutent ; consultez [ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly) pour la liste complète des effets |410| [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) | Quand `true`, restreint quels hooks s'exécutent ; consultez [ce qui s'exécute sous `allowManagedHooksOnly`](/docs/fr/settings-reference#what-runs-under-allowmanagedhooksonly) pour la liste complète des effets |

409| [`allowManagedMcpServersOnly`](/docs/fr/settings-reference#allowmanagedmcpserversonly) | Quand `true`, seul `allowedMcpServers` des paramètres gérés est respecté. `deniedMcpServers` fusionne toujours de toutes les sources. Consultez [Clés lues de chaque source d'administrateur](#keys-read-from-every-admin-source) pour savoir quelles sources gérées peuvent le définir, et [Configuration MCP gérée](/docs/fr/managed-mcp) |411| [`allowManagedMcpServersOnly`](/docs/fr/settings-reference#allowmanagedmcpserversonly) | Quand `true`, seul `allowedMcpServers` des paramètres gérés est respecté. `deniedMcpServers` fusionne toujours de toutes les sources. Consultez [Clés lues de chaque source d'administrateur](#keys-read-from-every-admin-source) pour savoir quelles sources gérées peuvent le définir, et [Configuration MCP gérée](/docs/fr/managed-mcp) |

410| [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly) | Rend les paramètres gérés la seule source de paramètres des règles de permission. L'entrée énumère chaque source qu'elle ignore |412| [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly) | Rend les paramètres gérés la seule source de paramètres des règles de permission. L'entrée énumère chaque source qu'elle ignore |

411| [`blockedMarketplaces`](/docs/fr/settings-reference#blockedmarketplaces) | Liste de blocage des sources de place de marché. Les sources bloquées sont vérifiées avant le téléchargement, donc elles ne touchent jamais le système de fichiers. Consultez [restrictions de place de marché gérée](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) |413| [`blockedMarketplaces`](/docs/fr/settings-reference#blockedmarketplaces) | Liste de blocage des sources de place de marché. Les sources bloquées sont vérifiées avant le téléchargement, donc elles ne touchent jamais le système de fichiers. Consultez [restrictions de place de marché gérée](/docs/fr/plugins/org#restrict-what-users-can-install) |

412| [`channelsEnabled`](/docs/fr/settings-reference#channelsenabled) | Autoriser les [canaux](/docs/fr/channels) pour l'organisation. Consultez [contrôles d'entreprise](/docs/fr/channels#enterprise-controls) pour la valeur par défaut sur chaque plan |414| [`channelsEnabled`](/docs/fr/settings-reference#channelsenabled) | Autoriser les [canaux](/docs/fr/channels) pour l'organisation. Consultez [contrôles d'entreprise](/docs/fr/channels#enterprise-controls) pour la valeur par défaut sur chaque plan |

413| [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources) | Quand `true`, bloque entièrement les [sources de plugin `command`](/docs/fr/plugin-marketplaces#command-sources), donc la commande déclarée par la place de marché ne s'exécute jamais. Bloque également les commandes [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) de la place de marché, sauf pour une place de marché que les paramètres gérés eux-mêmes déclarent. Quand non défini, suit `allowManagedHooksOnly`. Nécessite Claude Code v2.1.229 ou ultérieur, et le bloc `headersHelper` nécessite v2.1.238 ou ultérieur |415| [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources) | Quand `true`, bloque entièrement les [sources de plugin `command`](/docs/fr/plugins/marketplace-reference#command-plugin-source), donc la commande déclarée par la place de marché ne s'exécute jamais. Bloque également les commandes [`headersHelper`](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) de la place de marché, sauf pour une place de marché que les paramètres gérés eux-mêmes déclarent. Quand non défini, suit `allowManagedHooksOnly`. Nécessite Claude Code v2.1.229 ou ultérieur, et le bloc `headersHelper` nécessite v2.1.238 ou ultérieur |

414| [`disableSideloadFlags`](/docs/fr/settings-reference#disablesideloadflags) | Rejeter les drapeaux `--plugin-dir`, `--plugin-url`, `--agents`, et `--mcp-config` au démarrage. Dans les sessions cloud, Claude Code supprime les serveurs MCP que le serveur a livrés via `--mcp-config`, autres que les entrées `type: "sdk"` en processus, et démarre la session. Nécessite Claude Code v2.1.193 ou ultérieur |416| [`disableSideloadFlags`](/docs/fr/settings-reference#disablesideloadflags) | Rejeter les drapeaux `--plugin-dir`, `--plugin-url`, `--agents`, et `--mcp-config` au démarrage. Dans les sessions cloud, Claude Code supprime les serveurs MCP que le serveur a livrés via `--mcp-config`, autres que les entrées `type: "sdk"` en processus, et démarre la session. Nécessite Claude Code v2.1.193 ou ultérieur |

415| [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh) | Quand `true`, bloque le démarrage CLI jusqu'à ce que les paramètres gérés distants soient fraîchement récupérés et se termine si la récupération échoue. Consultez [application fail-closed](/docs/fr/server-managed-settings#enforce-fail-closed-startup) |417| [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh) | Quand `true`, bloque le démarrage CLI jusqu'à ce que les paramètres gérés distants soient fraîchement récupérés et se termine si la récupération échoue. Consultez [application fail-closed](/docs/fr/server-managed-settings#enforce-fail-closed-startup) |

416| [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) | Serveurs MCP distants fournis à chaque utilisateur aux côtés des leurs. Il fournit des serveurs plutôt que de verrouiller quoi que ce soit. Consultez [Fournir des serveurs via les paramètres gérés](/docs/fr/managed-mcp#provide-servers-through-managed-settings). Nécessite Claude Code v2.1.259 ou ultérieur |418| [`managedMcpServers`](/docs/fr/settings-reference#managedmcpservers) | Serveurs MCP distants fournis à chaque utilisateur aux côtés des leurs. Il fournit des serveurs plutôt que de verrouiller quoi que ce soit. Consultez [Fournir des serveurs via les paramètres gérés](/docs/fr/managed-mcp#provide-servers-through-managed-settings). Nécessite Claude Code v2.1.259 ou ultérieur |


421| [`policyHelper`](/docs/fr/settings-reference#policyhelper) | Exécutable qui calcule les paramètres gérés au démarrage ; consultez [Calculer les paramètres gérés avec un aide de politique](/docs/fr/settings-reference#policyhelper) |423| [`policyHelper`](/docs/fr/settings-reference#policyhelper) | Exécutable qui calcule les paramètres gérés au démarrage ; consultez [Calculer les paramètres gérés avec un aide de politique](/docs/fr/settings-reference#policyhelper) |

422| [`sandbox.filesystem.allowManagedReadPathsOnly`](/docs/fr/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Quand `true`, seuls les chemins `filesystem.allowRead` des paramètres gérés sont respectés. `denyRead` fusionne toujours de toutes les sources |424| [`sandbox.filesystem.allowManagedReadPathsOnly`](/docs/fr/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Quand `true`, seuls les chemins `filesystem.allowRead` des paramètres gérés sont respectés. `denyRead` fusionne toujours de toutes les sources |

423| [`sandbox.network.allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly) | Honorer uniquement les `allowedDomains` gérés et les règles d'autorisation `WebFetch(domain:...)` ; bloquer les autres domaines sans demander |425| [`sandbox.network.allowManagedDomainsOnly`](/docs/fr/settings-reference#sandbox-network-allowmanageddomainsonly) | Honorer uniquement les `allowedDomains` gérés et les règles d'autorisation `WebFetch(domain:...)` ; bloquer les autres domaines sans demander |

424| [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) | Contrôle quelles sources de place de marché de plugin les utilisateurs peuvent ajouter et installer des plugins. Consultez [restrictions de place de marché gérée](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) |426| [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) | Contrôle quelles sources de place de marché de plugin les utilisateurs peuvent ajouter et installer des plugins. Consultez [restrictions de place de marché gérée](/docs/fr/plugins/org#restrict-what-users-can-install) |

425| [`strictPluginOnlyCustomization`](/docs/fr/settings-reference#strictpluginonlycustomization) | Bloquer les skills, agents, hooks, et serveurs MCP des sources utilisateur et projet ; `true` verrouille les quatre, un tableau nomme lesquels |427| [`strictPluginOnlyCustomization`](/docs/fr/settings-reference#strictpluginonlycustomization) | Bloquer les skills, agents, hooks, et serveurs MCP des sources utilisateur et projet ; `true` verrouille les quatre, un tableau nomme lesquels |

426| [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings) | Quand défini dans le registre HKLM ou un fichier sous `C:\Program Files\ClaudeCode`, faire que WSL lise la chaîne de politique Windows, et lire `/etc/claude-code` uniquement quand aucun fichier de paramètres gérés ou drop-in sous ce répertoire ne livre une [clé de politique](#how-claude-code-combines-managed-sources) ; l'entrée donne l'ordre |428| [`wslInheritsWindowsSettings`](/docs/fr/settings-reference#wslinheritswindowssettings) | Quand défini dans le registre HKLM ou un fichier sous `C:\Program Files\ClaudeCode`, faire que WSL lise la chaîne de politique Windows, et lire `/etc/claude-code` uniquement quand aucun fichier de paramètres gérés ou drop-in sous ce répertoire ne livre une [clé de politique](#how-claude-code-combines-managed-sources) ; l'entrée donne l'ordre |

427 429 

mcp.md +93 −93

Details

50 Si l'installation échoue, faites correspondre le message que Claude Code signale :50 Si l'installation échoue, faites correspondre le message que Claude Code signale :

51 51 

52 * `Marketplace "claude-plugins-official" not found` : ajoutez le marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.52 * `Marketplace "claude-plugins-official" not found` : ajoutez le marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

53 * Le plugin est [introuvable dans le marketplace](/docs/fr/discover-plugins#install-plugins) : vérifiez le nom du plugin.53 * Le plugin est [introuvable dans le marketplace](/docs/fr/plugins/install#install-a-plugin) : vérifiez le nom du plugin.

54 54 

55 Si le résumé de l'installation signale `Run /reload-plugins to activate.`, Claude Code exécute ensuite ce rechargement pour vous. Si le rechargement vous avertit que votre prochain message relierait la conversation, exécutez `/reload-plugins --force`.55 Si le résumé de l'installation signale `Run /reload-plugins to activate.`, Claude Code exécute ensuite ce rechargement pour vous. Si le rechargement vous avertit que votre prochain message relierait la conversation, exécutez `/reload-plugins --force`.

56 </Step>56 </Step>


88 --header "Authorization: Bearer your-token"88 --header "Authorization: Bearer your-token"

89```89```

90 90 

91Lors de la configuration des serveurs MCP via JSON dans `.mcp.json`, `~/.claude.json`, ou `claude mcp add-json`, le champ `type` accepte `streamable-http` comme alias pour `http`. La spécification MCP utilise le nom `streamable-http` pour ce transport, donc les configurations copiées depuis la documentation du serveur fonctionnent sans modification.91Lors de la configuration des serveurs MCP via JSON dans `.mcp.json`, `~/.claude.json`, ou `claude mcp add-json`, le champ `type` accepte `streamable-http` comme alias pour `http`. La spécification MCP utilise le nom `streamable-http` pour ce transport, donc les configurations copiées à partir de la documentation du serveur fonctionnent sans modification.

92 92 

93Une entrée JSON qui a une `url` mais pas de `type` est une erreur de configuration, car Claude Code lit une entrée sans `type` comme un serveur stdio. Claude Code ignore ce serveur et rapporte `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`. Avant la v2.1.202, Claude Code rapportait cette mauvaise configuration comme `command: expected string, received undefined`.93Une entrée JSON qui a une `url` mais pas de `type` est une erreur de configuration, car Claude Code lit une entrée sans `type` comme un serveur stdio. Claude Code ignore ce serveur et signale `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`. Avant la v2.1.202, Claude Code signalait cette mauvaise configuration comme `command: expected string, received undefined`.

94 94 

95Dans les exécutions `--output-format stream-json`, Claude Code rapporte également une entrée `--mcp-config` ignorée dans le champ [`mcp_server_errors` de l'événement `system/init`](/docs/fr/headless#stream-responses), afin que les scripts puissent détecter que le serveur n'a jamais été chargé. Cela nécessite Claude Code v2.1.219 ou ultérieur.95Dans les exécutions `--output-format stream-json`, Claude Code signale également une entrée `--mcp-config` ignorée dans le champ [`mcp_server_errors`](/docs/fr/headless#stream-responses) de l'événement `system/init`, afin que les scripts puissent détecter que le serveur n'a jamais été chargé. Cela nécessite Claude Code v2.1.219 ou ultérieur.

96 96 

97<h3 id="option-2-add-a-remote-sse-server">97<h3 id="option-2-add-a-remote-sse-server">

98 Option 2 : Ajouter un serveur SSE distant98 Option 2 : Ajouter un serveur SSE distant


102 Le transport SSE (Server-Sent Events) est déprécié. Utilisez plutôt des serveurs HTTP, si disponibles.102 Le transport SSE (Server-Sent Events) est déprécié. Utilisez plutôt des serveurs HTTP, si disponibles.

103</Warning>103</Warning>

104 104 

105Certains services exposent toujours uniquement un point de terminaison SSE. Ajoutez-les avec la même commande `claude mcp add --transport http <name> <url>` que pour [un serveur HTTP](#option-1-add-a-remote-http-server). Claude Code essaie d'abord le transport HTTP et bascule vers SSE lorsque le serveur ne l'accepte pas. Le basculement automatique nécessite Claude Code v2.1.265 ou ultérieur.105Certains services exposent toujours uniquement un point de terminaison SSE. Ajoutez-les avec la même commande `claude mcp add --transport http <name> <url>` que [un serveur HTTP](#option-1-add-a-remote-http-server). Claude Code essaie d'abord le transport HTTP et bascule vers SSE lorsque le serveur ne l'accepte pas. Le basculement automatique nécessite Claude Code v2.1.265 ou ultérieur.

106 106 

107Sur une version antérieure, ou pour se connecter directement via SSE, passez `--transport sse` à la place :107Sur une version antérieure, ou pour vous connecter directement via SSE, passez plutôt `--transport sse` :

108 108 

109```bash theme={null}109```bash theme={null}

110# Syntaxe de base110# Syntaxe de base


124 124 

125Les serveurs stdio s'exécutent en tant que processus locaux sur votre machine. Ils sont idéaux pour les outils qui ont besoin d'un accès direct au système ou de scripts personnalisés.125Les serveurs stdio s'exécutent en tant que processus locaux sur votre machine. Ils sont idéaux pour les outils qui ont besoin d'un accès direct au système ou de scripts personnalisés.

126 126 

127Claude Code définit `CLAUDE_PROJECT_DIR` dans l'environnement du serveur généré pour que votre serveur puisse résoudre les chemins relatifs au projet sans dépendre du répertoire de travail. C'est le même répertoire que les hooks reçoivent dans leur variable `CLAUDE_PROJECT_DIR`. Lisez-le depuis l'intérieur de votre processus serveur, par exemple `process.env.CLAUDE_PROJECT_DIR` en Node ou `os.environ["CLAUDE_PROJECT_DIR"]` en Python.127Claude Code définit `CLAUDE_PROJECT_DIR` dans l'environnement du serveur généré pour la racine du projet, afin que votre serveur puisse résoudre les chemins relatifs au projet sans dépendre du répertoire de travail. C'est le même répertoire que les hooks reçoivent dans leur variable `CLAUDE_PROJECT_DIR`. Lisez-le depuis l'intérieur de votre processus serveur, par exemple `process.env.CLAUDE_PROJECT_DIR` en Node ou `os.environ["CLAUDE_PROJECT_DIR"]` en Python.

128 128 

129`CLAUDE_PROJECT_DIR` est la racine du projet stable et ne change pas lorsque vous ajoutez ou supprimez des répertoires de travail en cours de session. Un serveur qui limite son propre accès au système de fichiers à un ensemble de répertoires autorisés devrait implémenter la demande MCP `roots/list` à la place. Claude Code répond à `roots/list` avec le répertoire de lancement de la session plus chaque [répertoire de travail supplémentaire](/docs/fr/permissions#working-directories) que vous avez accordé avec `--add-dir`, `/add-dir`, ou le paramètre `additionalDirectories`. Claude Code envoie `notifications/roots/list_changed` lorsque cet ensemble change. Avant la v2.1.203, `roots/list` retournait uniquement le répertoire de lancement et Claude Code n'envoyait pas `notifications/roots/list_changed`.129`CLAUDE_PROJECT_DIR` est la racine de projet stable et ne change pas lorsque vous ajoutez ou supprimez des répertoires de travail en cours de session. Un serveur qui limite son propre accès au système de fichiers à un ensemble de répertoires autorisés devrait implémenter la demande MCP `roots/list` à la place. Claude Code répond à `roots/list` avec le répertoire de lancement de la session plus chaque [répertoire de travail supplémentaire](/docs/fr/permissions#working-directories) que vous avez accordé avec `--add-dir`, `/add-dir`, ou le paramètre `additionalDirectories`. Claude Code envoie `notifications/roots/list_changed` lorsque cet ensemble change. Avant la v2.1.203, `roots/list` retournait uniquement le répertoire de lancement et Claude Code n'envoyait pas `notifications/roots/list_changed`.

130 130 

131Cette variable est définie dans l'environnement du serveur, pas dans l'environnement de Claude Code lui-même, donc la référencer via l'expansion `${VAR}` dans la `command` ou `args` d'une entrée `.mcp.json` scoped au projet ou une entrée serveur locale ou utilisateur dans `~/.claude.json` nécessite une valeur par défaut telle que `${CLAUDE_PROJECT_DIR:-.}`. Les configurations MCP fournies par les plugins substituent `${CLAUDE_PROJECT_DIR}` directement et n'ont pas besoin de la valeur par défaut.131Cette variable est définie dans l'environnement du serveur, pas dans l'environnement de Claude Code lui-même, donc la référencer via l'expansion `${VAR}` dans la `command` ou `args` d'une entrée `.mcp.json` scoped au projet ou d'une entrée serveur locale ou utilisateur dans `~/.claude.json` nécessite une valeur par défaut telle que `${CLAUDE_PROJECT_DIR:-.}`. Les configurations MCP fournies par les plugins substituent `${CLAUDE_PROJECT_DIR}` directement et n'ont pas besoin de la valeur par défaut.

132 132 

133```bash theme={null}133```bash theme={null}

134# Syntaxe de base134# Syntaxe de base


142<Note>142<Note>

143 **Important : Séparez les arguments du serveur avec `--`**143 **Important : Séparez les arguments du serveur avec `--`**

144 144 

145 Pour les serveurs stdio, le `--` (double tiret) sépare les propres options de Claude, telles que `--transport`, `--env`, et `--scope`, de la commande et des arguments qui exécutent le serveur. Tout ce qui suit `--` est transmis au serveur sans modification.145 Pour les serveurs stdio, le `--` (double tiret) sépare les options propres à Claude, telles que `--transport`, `--env`, et `--scope`, de la commande et des arguments qui exécutent le serveur. Tout ce qui suit `--` est transmis au serveur sans modification.

146 146 

147 Par exemple :147 Par exemple :

148 148 


151 151 

152 Sans `--`, Claude Code essaierait d'analyser les drapeaux du serveur, comme `--port` ci-dessus, comme ses propres options.152 Sans `--`, Claude Code essaierait d'analyser les drapeaux du serveur, comme `--port` ci-dessus, comme ses propres options.

153 153 

154 `--env` accepte plusieurs paires `KEY=value`. Si le nom du serveur vient directement après `--env`, la CLI lit le nom comme une autre paire et le rejette, donc placez au moins une autre option, comme `--transport stdio`, entre `--env` et le nom du serveur.154 `--env` accepte plusieurs paires `KEY=value`. Si le nom du serveur vient directement après `--env`, la CLI lit le nom comme une autre paire et le rejette, donc placez au moins une autre option, telle que `--transport stdio`, entre `--env` et le nom du serveur.

155</Note>155</Note>

156 156 

157<h3 id="option-4-add-a-remote-websocket-server">157<h3 id="option-4-add-a-remote-websocket-server">

158 Option 4 : Ajouter un serveur WebSocket distant158 Option 4 : Ajouter un serveur WebSocket distant

159</h3>159</h3>

160 160 

161Les serveurs WebSocket maintiennent une connexion bidirectionnelle persistante, ce qui convient aux serveurs MCP distants qui poussent des événements vers Claude sans être sollicités. Utilisez HTTP à la place lorsque votre serveur répond uniquement aux demandes, car HTTP supporte OAuth et le drapeau `claude mcp add --transport`, tandis que WebSocket ne supporte ni l'un ni l'autre.161Les serveurs WebSocket maintiennent une connexion bidirectionnelle persistante, ce qui convient aux serveurs MCP distants qui poussent des événements vers Claude sans être sollicités. Utilisez plutôt HTTP lorsque votre serveur répond uniquement aux demandes, car HTTP supporte OAuth et le drapeau `claude mcp add --transport`, tandis que WebSocket ne supporte ni l'un ni l'autre.

162 162 

163Configurez les serveurs WebSocket dans `.mcp.json` ou avec `claude mcp add-json` :163Configurez les serveurs WebSocket dans `.mcp.json` ou avec `claude mcp add-json` :

164 164 


167 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'167 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'

168```168```

169 169 

170L'entrée `type: "ws"` accepte les mêmes champs `url`, `headers`, `headersHelper`, `timeout`, et `alwaysLoad` que `http`. L'authentification est uniquement par en-tête, donc passez un jeton statique dans `headers` ou générez-en un au moment de la connexion avec [`headersHelper`](#use-dynamic-headers-for-custom-authentication). Le drapeau `claude mcp add --transport` n'accepte pas `ws`.170L'entrée `type: "ws"` accepte les mêmes champs `url`, `headers`, `headersHelper`, `timeout`, et `alwaysLoad` que `http`. L'authentification est basée sur les en-têtes uniquement, donc passez un jeton statique dans `headers` ou générez-en un au moment de la connexion avec [`headersHelper`](#use-dynamic-headers-for-custom-authentication). Le drapeau `claude mcp add --transport` n'accepte pas `ws`.

171 171 

172<h3 id="add-a-server-from-setup-instructions-written-for-another-client">172<h3 id="add-a-server-from-setup-instructions-written-for-another-client">

173 Ajouter un serveur à partir d'instructions de configuration écrites pour un autre client173 Ajouter un serveur à partir d'instructions de configuration écrites pour un autre client

174</h3>174</h3>

175 175 

176Les serveurs MCP ne sont pas spécifiques à Claude Code, donc les instructions de configuration d'un serveur peuvent être écrites pour Claude Desktop, Cursor, ou un autre client MCP et ne pas donner de commande `claude mcp add`. Pour ajouter le serveur quand même, cherchez dans ces instructions l'une de ces trois choses :176Les serveurs MCP ne sont pas spécifiques à Claude Code, donc les instructions de configuration d'un serveur peuvent être écrites pour Claude Desktop, Cursor, ou un autre client MCP et ne pas donner de commande `claude mcp add`. Pour ajouter le serveur quand même, cherchez dans ces instructions une URL, une commande de lancement, ou un bloc JSON :

177 177 

178* **Une URL** telle que `https://mcp.example.com/mcp` : le serveur est distant.178* **Une URL** telle que `https://mcp.example.com/mcp` : le serveur est distant.

179* **Une commande de lancement** telle que `npx -y @example/mcp-server` : le serveur s'exécute sur votre machine.179* **Une commande de lancement** telle que `npx -y @example/mcp-server` : le serveur s'exécute sur votre machine.


185 À partir d'une URL185 À partir d'une URL

186</h4>186</h4>

187 187 

188Une URL signifie que le serveur est distant. Pour un point de terminaison `https://`, ajoutez-le avec `--transport http`, ou suivez l'[Option 2](#option-2-add-a-remote-sse-server) lorsque les instructions disent que le point de terminaison utilise SSE. Pour un point de terminaison `wss://`, utilisez plutôt l'[Option 4](#option-4-add-a-remote-websocket-server), car `--transport` n'accepte pas `ws` :188Une URL signifie que le serveur est distant. Pour un point de terminaison `https://`, ajoutez-le avec `--transport http`, ou suivez [Option 2](#option-2-add-a-remote-sse-server) lorsque les instructions indiquent que le point de terminaison utilise SSE. Pour un point de terminaison `wss://`, utilisez plutôt [Option 4](#option-4-add-a-remote-websocket-server), car `--transport` n'accepte pas `ws` :

189 189 

190```bash theme={null}190```bash theme={null}

191claude mcp add --transport http example https://mcp.example.com/mcp191claude mcp add --transport http example https://mcp.example.com/mcp

192```192```

193 193 

194Si les instructions donnent également une clé API ou un en-tête de jeton, passez-le avec `--header` comme montré dans l'[Option 1](#option-1-add-a-remote-http-server).194Si les instructions donnent également une clé API ou un en-tête de jeton, passez-le avec `--header` comme montré dans [Option 1](#option-1-add-a-remote-http-server).

195 195 

196<h4 id="from-an-npx-uvx-or-binary-command">196<h4 id="from-an-npx-uvx-or-binary-command">

197 À partir d'une commande `npx`, `uvx`, ou binaire197 À partir d'une commande `npx`, `uvx`, ou binaire


203claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server203claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server

204```204```

205 205 

206L'[Option 3](#option-3-add-a-local-stdio-server) couvre le séparateur `--` en détail.206[Option 3](#option-3-add-a-local-stdio-server) couvre le séparateur `--` en détail.

207 207 

208<h4 id="from-an-mcpservers-json-block">208<h4 id="from-an-mcpservers-json-block">

209 À partir d'un bloc JSON `mcpServers`209 À partir d'un bloc JSON `mcpServers`


233claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'233claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'

234```234```

235 235 

236[Ajouter des serveurs MCP à partir de la configuration JSON](#add-mcp-servers-from-json-configuration) couvre l'échappement du shell et le drapeau `--scope` pour `add-json`. Pour partager le serveur avec votre équipe à la place, ajoutez `--scope project`, ou ajoutez l'entrée sous `mcpServers` dans `.mcp.json` à la racine de votre projet et validez-la. La [portée du projet](#project-scope) couvre comment Claude Code charge et approuve ce fichier.236[Ajouter des serveurs MCP à partir de la configuration JSON](#add-mcp-servers-from-json-configuration) couvre l'échappement du shell et le drapeau `--scope` pour `add-json`. Pour partager le serveur avec votre équipe à la place, ajoutez `--scope project`, ou ajoutez l'entrée sous `mcpServers` dans `.mcp.json` à la racine de votre projet et validez-la. [Portée du projet](#project-scope) couvre comment Claude Code charge et approuve ce fichier.

237 237 

238Chaque commande `claude mcp add` et `claude mcp add-json` imprime une ligne `Added ...`. Pour vérifier que Claude Code s'est connecté, exécutez `claude mcp get <name>` ; la [Statut du serveur](#server-status) couvre les statuts qu'il affiche et l'étape d'approbation pour les serveurs `.mcp.json`.238Chaque commande `claude mcp add` et `claude mcp add-json` imprime une ligne `Added ...`. Pour vérifier que Claude Code s'est connecté, exécutez `claude mcp get <name>` ; [État du serveur](#server-status) couvre les statuts qu'il affiche et l'étape d'approbation pour les serveurs `.mcp.json`.

239 239 

240<h3 id="managing-your-servers">240<h3 id="managing-your-servers">

241 Gestion de vos serveurs241 Gestion de vos serveurs


253# Supprimer un serveur253# Supprimer un serveur

254claude mcp remove notion254claude mcp remove notion

255 255 

256# (dans Claude Code) Vérifier le statut du serveur256# (dans Claude Code) Vérifier l'état du serveur

257/mcp257/mcp

258```258```

259 259 

260Lorsque vous supprimez un serveur distant, Claude Code supprime également les jetons OAuth et l'enregistrement du client qu'il a stockés pour ce serveur.260Lorsque vous supprimez un serveur distant, Claude Code supprime également les jetons OAuth et l'enregistrement du client qu'il a stockés pour ce serveur.

261 261 

262<h4 id="server-status">262<h4 id="server-status">

263 Statut du serveur263 État du serveur

264</h4>264</h4>

265 265 

266`claude mcp add` confirme un ajout réussi en imprimant une ligne `Added ...`, ce qui signifie que la configuration a été écrite. `claude mcp list` affiche ensuite un statut de santé à côté de chaque serveur qu'il liste, tel que `✔ Connected`, `! Needs authentication`, ou `✘ Failed to connect`. Un statut d'échec signifie que Claude Code n'a pas pu se connecter à ce serveur, pas que la commande list a échoué.266`claude mcp add` confirme un ajout réussi en imprimant une ligne `Added ...`, ce qui signifie que la configuration a été écrite. `claude mcp list` affiche ensuite un statut de santé à côté de chaque serveur qu'il liste, tel que `✔ Connected`, `! Needs authentication`, ou `✘ Failed to connect`. Un statut d'échec signifie que Claude Code n'a pas pu se connecter à ce serveur, pas que la commande list a échoué.

267 267 

268Les statuts dans cette liste rapportent une décision de configuration plutôt qu'une tentative de connexion, donc Claude Code les imprime sans se connecter au serveur :268Les statuts dans cette liste signalent une décision de configuration plutôt qu'une tentative de connexion, donc Claude Code les imprime sans se connecter au serveur :

269 269 

270* ``⏸ Pending approval (run `claude` to approve)`` : un serveur scoped au projet depuis `.mcp.json` que vous n'avez pas encore approuvé. Claude Code l'affiche à la fois dans `claude mcp list` et `claude mcp get <name>`. Exécutez `claude` de manière interactive pour l'examiner et l'approuver.270* ``⏸ Pending approval (run `claude` to approve)`` : un serveur scoped au projet à partir de `.mcp.json` que vous n'avez pas encore approuvé. Claude Code l'affiche à la fois dans `claude mcp list` et `claude mcp get <name>`. Exécutez `claude` de manière interactive pour l'examiner et l'approuver.

271* `✘ Rejected (see disabledMcpjsonServers in settings)` : un serveur `.mcp.json` qu'une entrée [`disabledMcpjsonServers`](/docs/fr/settings-reference#disabledmcpjsonservers) rejette. Claude Code l'affiche uniquement dans `claude mcp get <name>`.271* `✘ Rejected (see disabledMcpjsonServers in settings)` : un serveur `.mcp.json` qu'une entrée [`disabledMcpjsonServers`](/docs/fr/settings-reference#disabledmcpjsonservers) rejette. Claude Code l'affiche uniquement dans `claude mcp get <name>`.

272* `⊘ Disabled for this project (re-enable via /mcp)` : un serveur que la liste [`disabledMcpServers`](#disable-a-server-without-removing-it) du projet nomme. Claude Code l'affiche à la fois dans `claude mcp list` et `claude mcp get <name>`. Réactivez le serveur depuis le panneau `/mcp`. Avant la v2.1.238, les deux commandes se connectaient à un serveur désactivé pour le vérifier et rapportaient le résultat de la connexion.272* `⊘ Disabled for this project (re-enable via /mcp)` : un serveur que la liste [`disabledMcpServers`](#disable-a-server-without-removing-it) du projet nomme. Claude Code l'affiche à la fois dans `claude mcp list` et `claude mcp get <name>`. Réactivez le serveur à partir du panneau `/mcp`. Avant la v2.1.238, les deux commandes se connectaient à un serveur désactivé pour le vérifier et signalaient le résultat de la connexion.

273 273 

274Les serveurs WebSocket n'apparaissent pas dans la sortie `claude mcp list`. Utilisez `claude mcp get <name>` ou le panneau `/mcp` pour les vérifier.274Les serveurs WebSocket n'apparaissent pas dans la sortie de `claude mcp list`. Utilisez `claude mcp get <name>` ou le panneau `/mcp` pour les vérifier.

275 275 

276<h4 id="project-server-approvals-and-workspace-trust">276<h4 id="project-server-approvals-and-workspace-trust">

277 Approbations des serveurs de projet et confiance de l'espace de travail277 Approbations des serveurs de projet et confiance de l'espace de travail

278</h4>278</h4>

279 279 

280À partir de la v2.1.196, `claude mcp list` et `claude mcp get` lisent les approbations `.mcp.json` uniquement à partir des fichiers de paramètres qui ne sont pas validés dans le référentiel jusqu'à ce que vous fassiez confiance à l'espace de travail en exécutant `claude` et en acceptant la boîte de dialogue de confiance de l'espace de travail. Un référentiel cloné ne peut pas approuver ses propres serveurs : [`enableAllProjectMcpServers`](/docs/fr/settings-reference#enableallprojectmcpservers) ou [`enabledMcpjsonServers`](/docs/fr/settings-reference#enabledmcpjsonservers) validé dans le `.claude/settings.json` du projet est ignoré dans un dossier non approuvé, et le serveur reste à `⏸ Pending approval` au lieu d'être connecté et vérifié.280À partir de la v2.1.196, `claude mcp list` et `claude mcp get` lisent les approbations `.mcp.json` uniquement à partir des fichiers de paramètres qui ne sont pas validés dans le référentiel jusqu'à ce que vous fassiez confiance à l'espace de travail en exécutant `claude` et en acceptant la boîte de dialogue de confiance de l'espace de travail. Un référentiel cloné ne peut pas approuver ses propres serveurs : [`enableAllProjectMcpServers`](/docs/fr/settings-reference#enableallprojectmcpservers) ou [`enabledMcpjsonServers`](/docs/fr/settings-reference#enabledmcpjsonservers) validés dans le `.claude/settings.json` du projet est ignoré dans un dossier non approuvé, et le serveur reste à `⏸ Pending approval` au lieu d'être connecté et vérifié.

281 281 

282Les approbations de ces sources s'appliquent toujours dans un dossier non approuvé :282Les approbations de ces sources s'appliquent toujours dans un dossier non approuvé :

283 283 


285* paramètres gérés285* paramètres gérés

286* paramètres passés avec `--settings`286* paramètres passés avec `--settings`

287 287 

288Claude Code applique également les approbations d'un `.claude/settings.local.json` non suivi, mais il exécute git pour vérifier si le fichier est suivi, et il n'exécute cette vérification que dans un [dossier approuvé](/docs/fr/permissions#project-allow-rules-and-workspace-trust). Dans un dossier que vous n'avez jamais approuvé, Claude Code attend la boîte de dialogue de confiance avant d'appliquer les approbations du fichier, sauf si le dossier est votre propre répertoire de configuration : votre répertoire personnel, ou un répertoire dont le `.claude` que vous avez défini comme [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars). Avant la v2.1.207, Claude Code appliquait les approbations d'un `.claude/settings.local.json` non suivi même dans un dossier que vous n'aviez jamais approuvé.288Claude Code applique également les approbations à partir d'un `.claude/settings.local.json` non suivi, mais il exécute git pour vérifier si le fichier est suivi, et il n'exécute cette vérification que dans un [dossier approuvé](/docs/fr/permissions#project-allow-rules-and-workspace-trust). Dans un dossier que vous n'avez jamais approuvé, Claude Code attend la boîte de dialogue de confiance avant d'appliquer les approbations du fichier, sauf si le dossier est votre répertoire de configuration personnel : votre répertoire personnel, ou un répertoire dont vous avez défini le `.claude` comme [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars). Avant la v2.1.207, Claude Code appliquait les approbations à partir d'un `.claude/settings.local.json` non suivi même dans un dossier que vous n'aviez jamais approuvé.

289 289 

290Une entrée `disabledMcpjsonServers` dans n'importe quel fichier de paramètres rejette toujours le serveur.290Une entrée `disabledMcpjsonServers` dans n'importe quel fichier de paramètres rejette toujours le serveur.

291 291 

292<h4 id="server-status-detail">292<h4 id="server-status-detail">

293 Détail du statut du serveur293 Détail de l'état du serveur

294</h4>294</h4>

295 295 

296Dans `/mcp`, y compris le menu d'un serveur là-bas, et dans le [gestionnaire `/plugin`](/docs/fr/plugins), un serveur HTTP ou SSE distant que vous avez utilisé auparavant peut afficher un statut `cached` tel que `cached 2h ago · connects on first use · 5 tools`. Claude Code a chargé la liste d'outils du serveur à partir de son cache de découverte, enregistré dans une session précédente, au lieu de se connecter au démarrage, et Claude Code connecte le serveur la première fois que Claude appelle l'un des outils du serveur. Les outils sont disponibles à partir de votre premier message, donc vous n'avez rien à faire. Le cache de découverte et son statut `cached` nécessitent Claude Code v2.1.221 ou ultérieur.296Dans `/mcp`, y compris le menu d'un serveur là-bas, et dans le gestionnaire [`/plugin`](/docs/fr/plugins/install), un serveur HTTP ou SSE distant que vous avez utilisé auparavant peut afficher un statut `cached` tel que `cached 2h ago · connects on first use · 5 tools`. Claude Code a chargé la liste d'outils du serveur à partir de son cache de découverte, enregistré dans une session précédente, au lieu de se connecter au démarrage, et Claude Code connecte le serveur la première fois que Claude appelle l'un des outils du serveur. Les outils sont disponibles à partir de votre premier message, donc vous n'avez rien à faire. Le cache de découverte et son statut `cached` nécessitent Claude Code v2.1.221 ou ultérieur.

297 297 

298Le cache de découverte est désactivé par défaut sauf si un déploiement progressif l'a activé pour votre compte. Définissez [`MCP_DISCOVERY_CACHE=1`](/docs/fr/env-vars) pour l'activer, ou `0` pour le garder désactivé même lorsque le déploiement l'a activé. Avant la v2.1.238, le cache était activé par défaut.298Le cache de découverte est désactivé par défaut sauf si un déploiement progressif l'a activé pour votre compte. Définissez [`MCP_DISCOVERY_CACHE=1`](/docs/fr/env-vars) pour l'activer, ou `0` pour le garder désactivé même lorsque le déploiement l'a activé. Avant la v2.1.238, le cache était activé par défaut.

299 299 

300Deux actions dans le menu d'un serveur dans `/mcp` affectent également l'entrée du cache de ce serveur :300Deux actions dans le menu d'un serveur dans `/mcp` affectent également l'entrée du cache de ce serveur :

301 301 

302* **Reconnect** : sur un serveur `cached`, Claude Code le connecte maintenant plutôt que lors de son premier appel d'outil et conserve l'entrée. Sur un serveur connecté ou échoué, Claude Code le reconnecte et supprime également l'entrée.302* **Reconnect** : sur un serveur `cached`, Claude Code le connecte maintenant plutôt que lors de son premier appel d'outil et conserve l'entrée. Sur un serveur connecté ou défaillant, Claude Code le reconnecte et supprime également l'entrée.

303* **Clear authentication** : Claude Code révoque l'authentification du serveur et supprime également l'entrée.303* **Clear authentication** : Claude Code révoque l'authentification du serveur et supprime également l'entrée.

304 304 

305Après suppression de l'entrée, Claude Code récupère la liste d'outils du serveur à partir du serveur au lieu du cache.305Après suppression de l'entrée, Claude Code récupère la liste d'outils du serveur à partir du serveur au lieu du cache.

306 306 

307Lorsque le statut d'un serveur est `✘ Failed to connect`, `claude mcp list` ajoute le détail de l'échec à cette ligne de statut, et `claude mcp get <name>` l'affiche sur une ligne `Issue:` : le statut HTTP ou le code d'erreur, plus tout texte d'erreur que le serveur a retourné. La vue de détail du serveur dans `/mcp` inclut le même texte rapporté par le serveur dans sa ligne `Issue:`. Claude Code rédige le texte ressemblant à des identifiants de ce détail et n'inclut jamais l'URL du serveur développée, qui peut contenir des secrets. Claude Code n'ajoute aucun détail à un statut `✘ Connection error`, car le texte d'exception qu'il imprimerait là peut intégrer cette URL. Avant la v2.1.219, les deux commandes affichaient uniquement le statut d'échec nu, sans le code de statut ou le texte d'erreur du serveur.307Lorsque le statut d'un serveur est `✘ Failed to connect`, `claude mcp list` ajoute le détail de l'échec à cette ligne de statut, et `claude mcp get <name>` l'affiche sur une ligne `Issue:` : le code de statut HTTP ou le code d'erreur, plus tout texte d'erreur que le serveur a retourné. La vue détaillée du serveur dans `/mcp` inclut le même texte signalé par le serveur dans sa ligne `Issue:`. Claude Code rédige le texte ressemblant à des identifiants de ce détail et n'inclut jamais l'URL du serveur développée, qui peut contenir des secrets. Claude Code n'ajoute aucun détail à un statut `✘ Connection error`, car le texte d'exception qu'il imprimerait là peut intégrer cette URL. Avant la v2.1.219, les deux commandes affichaient uniquement le statut d'échec nu, sans le code de statut ou le texte d'erreur du serveur.

308 308 

309Lorsque vous terminez l'authentification depuis `/mcp` et que la connexion échoue toujours avec un statut HTTP ou un code d'erreur de transport, Claude Code ajoute ce code et l'origine de l'URL qu'il a essayée au message qu'il imprime après la tentative. L'origine est le schéma et l'hôte, plus le port lorsque l'URL en nomme un, tel que `https://mcp.example.com`.309Lorsque vous terminez l'authentification à partir de `/mcp` et que la connexion échoue toujours avec un code de statut HTTP ou un code d'erreur de transport, Claude Code ajoute ce code et l'origine de l'URL du serveur au message qu'il imprime après la tentative. L'origine est le schéma et l'hôte, plus le port lorsque l'URL en nomme un, tel que `https://mcp.example.com`.

310 310 

311* Le chemin et la requête n'apparaissent jamais dans ce message.311* Le chemin et la requête n'apparaissent jamais dans ce message.

312* Pour un serveur dans la portée locale, de projet, ou utilisateur [scope](#mcp-installation-scopes) ou dans la configuration MCP gérée, l'origine affiche l'hôte tel qu'écrit dans cette configuration, donc une référence `${VAR}` dans l'hôte n'est pas développée dans le message.312* Pour un serveur dans la portée [scope](#mcp-installation-scopes) locale, de projet, ou utilisateur ou dans la configuration MCP gérée, l'origine affiche l'hôte tel qu'écrit dans cette configuration, donc une référence `${VAR}` dans l'hôte n'est pas développée dans le message.

313* Pour un échec sans code de statut ou d'erreur, Claude Code affiche le texte d'erreur sans l'origine.313* Pour un échec sans code de statut ou d'erreur, Claude Code affiche le texte d'erreur sans l'origine.

314 314 

315Un serveur distant dont la configuration a une `url` vide s'affiche comme `not configured` dans `/mcp`, dans `claude mcp list`, et dans le [gestionnaire `/plugin`](/docs/fr/plugins), et Claude Code ne tente pas de s'y connecter. Un plugin peut inclure une entrée d'espace réservé comme celle-ci pour un connecteur que vous configurez plus tard, afin que Claude Code ne la rapporte pas comme une erreur ou un problème de configuration. La vue de détail du serveur dans `/mcp` lit `No URL configured for this server` ; définissez l'`url` de l'entrée pour la connecter. Avant la v2.1.208, Claude Code rapportait une `url` vide comme un problème de configuration avec une invite de reconnexion.315Un serveur distant dont la configuration a une `url` vide s'affiche comme `not configured` dans `/mcp`, dans `claude mcp list`, et dans le gestionnaire [`/plugin`](/docs/fr/plugins/install), et Claude Code ne tente pas de s'y connecter. Un plugin peut inclure une entrée d'espace réservé comme celle-ci pour un connecteur que vous configurez plus tard, afin que Claude Code ne le signale pas comme une erreur ou un problème de configuration. La vue détaillée du serveur dans `/mcp` lit `No URL configured for this server` ; définissez la `url` de l'entrée pour la connecter. Avant la v2.1.208, Claude Code signalait une `url` vide comme un problème de configuration avec une invite de reconnexion.

316 316 

317<h4 id="configuration-warnings">317<h4 id="configuration-warnings">

318 Avertissements de configuration318 Avertissements de configuration

319</h4>319</h4>

320 320 

321Claude Code avertit des problèmes de configuration ci-dessous. Chaque entrée dit ce que Claude Code vérifie et comment effacer l'avertissement :321Claude Code avertit des problèmes de configuration ci-dessous. Chaque entrée indique ce que Claude Code vérifie et comment effacer l'avertissement :

322 322 

323* **Espaces blancs cachés** : Claude Code avertit lorsqu'une valeur de configuration MCP porte des espaces blancs cachés en début ou en fin, ce qui provient souvent du collage d'un jeton avec une nouvelle ligne de fin. Claude Code vérifie `command`, `url`, chaque entrée `args`, et les valeurs et noms de clés sous `env` et `headers`. Claude Code affiche l'avertissement dans la sortie `claude mcp list` et dans `/mcp`, nommant les champs affectés sans répéter leurs valeurs, par exemple `Leading or trailing whitespace in: headers.Authorization`. Claude Code ne supprime pas les espaces blancs et utilise les valeurs exactement comme écrites, donc modifiez la configuration pour les supprimer.323* **Espaces blancs cachés** : Claude Code avertit lorsqu'une valeur de configuration MCP porte des espaces blancs cachés en début ou en fin, ce qui provient souvent du collage d'un jeton avec une nouvelle ligne de fin. Claude Code vérifie `command`, `url`, chaque entrée `args`, et les valeurs et noms de clés sous `env` et `headers`. Claude Code affiche l'avertissement dans la sortie de `claude mcp list` et dans `/mcp`, en nommant les champs affectés sans répéter leurs valeurs, par exemple `Leading or trailing whitespace in: headers.Authorization`. Claude Code ne supprime pas les espaces blancs et utilise les valeurs exactement telles qu'écrites, donc modifiez la configuration pour les supprimer.

324* **Même nom dans plus d'une portée** : si vous définissez le même nom de serveur dans plus d'une [portée](#mcp-installation-scopes) avec des points de terminaison différents, Claude Code avertit du conflit dans la sortie `claude mcp list` et dans `/mcp`. Claude Code stocke les connexions OAuth par point de terminaison, donc lorsque vous authentifiez la définition qui se charge dans un projet, vous devez toujours vous connecter séparément dans un projet où une définition différente se charge. Conservez le point de terminaison que vous voulez et supprimez les autres avec `claude mcp remove <name> --scope <scope>`. Dans l'avertissement, Claude Code cite le point de terminaison de chaque portée tel qu'écrit dans votre configuration, avec les références [`${VAR}`](#environment-variable-expansion-in-mcp-json) non développées, donc il n'affiche jamais une valeur résolue telle qu'une clé API.324* **Même nom dans plus d'une portée** : si vous définissez le même nom de serveur dans plus d'une [scope](#mcp-installation-scopes) avec des points de terminaison différents, Claude Code avertit du conflit dans la sortie de `claude mcp list` et dans `/mcp`. Claude Code stocke les connexions OAuth par point de terminaison, donc lorsque vous authentifiez la définition qui se charge dans un projet, vous devez toujours vous connecter séparément dans un projet où une définition différente se charge. Conservez le point de terminaison que vous voulez et supprimez les autres avec `claude mcp remove <name> --scope <scope>`. Dans l'avertissement, Claude Code cite le point de terminaison de chaque portée tel qu'écrit dans votre configuration, avec les références [`${VAR}`](#environment-variable-expansion-in-mcp-json) non développées, donc il n'affiche jamais une valeur résolue telle qu'une clé API.

325* **Noms réservés** : Claude Code réserve les noms de ses serveurs intégrés, y compris `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview`, et `Claude Browser`. Si votre configuration définit un serveur avec un nom réservé, Claude Code le saute au moment du chargement et affiche un avertissement vous demandant de le renommer. `claude mcp add` rejette un nom réservé avec une erreur. `Claude Preview` et `Claude Browser` nomment tous deux le serveur intégré que le [volet d'aperçu de l'application de bureau Claude Code](/docs/fr/desktop#preview-your-app) utilise. Avant la v2.1.205, `Claude Browser` n'était pas réservé, donc un serveur configuré par l'utilisateur pouvait s'enregistrer sous ce nom.325* **Noms réservés** : Claude Code réserve les noms de ses serveurs intégrés, y compris `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview`, et `Claude Browser`. Si votre configuration définit un serveur avec un nom réservé, Claude Code le saute au moment du chargement et affiche un avertissement vous demandant de le renommer. `claude mcp add` rejette un nom réservé avec une erreur. `Claude Preview` et `Claude Browser` nomment tous deux le serveur intégré que le [volet d'aperçu de l'application de bureau Claude Code](/docs/fr/desktop#preview-your-app) utilise. Avant la v2.1.205, `Claude Browser` n'était pas réservé, donc un serveur configuré par l'utilisateur pouvait s'enregistrer sous ce nom.

326* **Variable d'environnement manquante** : si une référence [`${VAR}`](#environment-variable-expansion-in-mcp-json) dans la configuration d'un serveur nomme une variable qui n'est pas définie et n'a pas de `:-default`, Claude Code avertit dans la sortie `claude mcp list` et dans `/mcp`, nommant la variable, et charge toujours le serveur avec le texte `${VAR}` non développé. Définissez la variable ou ajoutez un fallback `${VAR:-default}`. Dans l'`url` et les `headers` d'un serveur distant, certaines variables d'identifiants [lisent comme vides](#credential-variables-that-read-as-empty) à la place, sans avertissement.326* **Variable d'environnement manquante** : si une référence [`${VAR}`](#environment-variable-expansion-in-mcp-json) dans la configuration d'un serveur nomme une variable qui n'est pas définie et n'a pas de `:-default`, Claude Code avertit dans la sortie de `claude mcp list` et dans `/mcp`, en nommant la variable, et charge toujours le serveur avec le texte `${VAR}` non développé. Définissez la variable ou ajoutez un fallback `${VAR:-default}`. Dans l'`url` et les `headers` d'un serveur distant, certaines variables d'identifiants [lisent comme vides](#credential-variables-that-read-as-empty) à la place, sans avertissement.

327 327 

328<h4 id="tool-availability">328<h4 id="tool-availability">

329 Disponibilité des outils329 Disponibilité des outils


331 331 

332Le panneau `/mcp` affiche le nombre d'outils à côté de chaque serveur connecté et signale les serveurs qui annoncent la capacité des outils mais n'exposent aucun outil.332Le panneau `/mcp` affiche le nombre d'outils à côté de chaque serveur connecté et signale les serveurs qui annoncent la capacité des outils mais n'exposent aucun outil.

333 333 

334Si votre demande a besoin d'outils d'un serveur qui se connecte toujours en arrière-plan, Claude attend ce serveur avant de continuer. La façon dont l'attente se produit dépend de votre configuration :334Si votre demande a besoin d'outils d'un serveur qui se connecte toujours en arrière-plan, Claude attend que ce serveur se connecte avant de continuer. La façon dont l'attente se produit dépend de votre configuration :

335 335 

336* **Avec [recherche d'outils](#scale-with-mcp-tool-search), la valeur par défaut** : l'attente se produit à l'intérieur de l'appel `ToolSearch`.336* **Avec [recherche d'outils](#scale-with-mcp-tool-search), la valeur par défaut** : l'attente se produit à l'intérieur de l'appel `ToolSearch`.

337* **Sans recherche d'outils** : Claude utilise l'outil `WaitForMcpServers` à la place. Les configurations sans recherche d'outils incluent une `ANTHROPIC_BASE_URL` personnalisée, `ENABLE_TOOL_SEARCH=false`, et un modèle antérieur à la génération Claude 4.5 sur la plateforme Agent de Google Cloud.337* **Sans recherche d'outils** : Claude utilise plutôt l'outil `WaitForMcpServers`. Les configurations sans recherche d'outils incluent une `ANTHROPIC_BASE_URL` personnalisée, `ENABLE_TOOL_SEARCH=false`, et un modèle antérieur à la génération Claude 4.5 sur la plateforme Agent de Google Cloud.

338* **Sur un déploiement Microsoft Foundry [hébergé sur Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)** : Claude commence sur le chemin de recherche d'outils plutôt qu'avec `WaitForMcpServers`, car Claude Code découvre le rejet côté serveur du déploiement uniquement à partir de l'API. Après que Claude Code bascule ce déploiement vers [chargement en amont](#scale-with-mcp-tool-search), les outils d'un serveur qui termine la connexion deviennent disponibles à la prochaine demande de Claude.338* **Sur un déploiement Microsoft Foundry [hébergé sur Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)** : Claude commence sur le chemin de recherche d'outils plutôt qu'avec `WaitForMcpServers`, car Claude Code découvre le rejet côté serveur du déploiement uniquement à partir de l'API. Après que Claude Code bascule ce déploiement vers [chargement en amont](#scale-with-mcp-tool-search), les outils d'un serveur qui termine la connexion deviennent disponibles à la demande suivante de Claude.

339 339 

340Avec la recherche d'outils activée, lorsqu'un serveur termine la connexion pendant que Claude travaille, Claude Code liste les noms d'outils du serveur à Claude à sa prochaine demande dans le même tour. Claude peut alors rechercher et appeler ces outils sans attendre votre prochain message.340Avec la recherche d'outils activée, lorsqu'un serveur termine la connexion pendant que Claude travaille, Claude Code liste les noms d'outils du serveur à Claude à sa demande suivante dans le même tour. Claude peut alors rechercher et appeler ces outils sans attendre votre message suivant.

341 341 

342<h3 id="disable-a-server-without-removing-it">342<h3 id="disable-a-server-without-removing-it">

343 Désactiver un serveur sans le supprimer343 Désactiver un serveur sans le supprimer


350* `disabledMcpServers` : une liste d'exclusion pour les serveurs configurés par l'utilisateur, les serveurs de plugins, les serveurs que votre organisation [fournit via les paramètres gérés](/docs/fr/managed-mcp#provide-servers-through-managed-settings), les connecteurs claude.ai que Claude Code [récupère lui-même](#how-connectors-reach-claude-code), et les serveurs intégrés qui sont activés par défaut. Claude Code ne se connecte pas à un serveur que vous listez ici. Lorsque vous désactivez un connecteur claude.ai avec le basculement `/mcp` par projet décrit dans [Désactiver les connecteurs claude.ai](#disable-claude-ai-connectors), Claude Code l'écrit dans cette liste sous son nom d'affichage, par exemple `claude.ai Slack`.350* `disabledMcpServers` : une liste d'exclusion pour les serveurs configurés par l'utilisateur, les serveurs de plugins, les serveurs que votre organisation [fournit via les paramètres gérés](/docs/fr/managed-mcp#provide-servers-through-managed-settings), les connecteurs claude.ai que Claude Code [récupère lui-même](#how-connectors-reach-claude-code), et les serveurs intégrés qui sont activés par défaut. Claude Code ne se connecte pas à un serveur que vous listez ici. Lorsque vous désactivez un connecteur claude.ai avec le basculement `/mcp` par projet décrit dans [Désactiver les connecteurs claude.ai](#disable-claude-ai-connectors), Claude Code l'écrit dans cette liste sous son nom d'affichage, par exemple `claude.ai Slack`.

351* `enabledMcpServers` : une liste d'inclusion pour les serveurs intégrés qui sont désactivés par défaut, tels que `computer-use`. Claude Code se connecte à un serveur désactivé par défaut uniquement lorsque vous le listez ici.351* `enabledMcpServers` : une liste d'inclusion pour les serveurs intégrés qui sont désactivés par défaut, tels que `computer-use`. Claude Code se connecte à un serveur désactivé par défaut uniquement lorsque vous le listez ici.

352 352 

353Claude Code consulte exactement l'une des deux listes pour chaque serveur, donc aucune liste ne remplace l'autre. Si vous ajoutez un serveur régulier à `enabledMcpServers`, ou un serveur intégré désactivé par défaut à `disabledMcpServers`, Claude Code ignore l'entrée.353Claude Code consulte exactement l'une des deux listes pour chaque serveur, donc ni l'une ni l'autre ne remplace l'autre. Si vous ajoutez un serveur régulier à `enabledMcpServers`, ou un serveur intégré désactivé par défaut à `disabledMcpServers`, Claude Code ignore l'entrée.

354 354 

355`disabledMcpServers` et `enabledMcpServers` ne sont pas liés à [`enabledMcpjsonServers`](/docs/fr/settings-reference#enabledmcpjsonservers) et [`disabledMcpjsonServers`](/docs/fr/settings-reference#disabledmcpjsonservers), qui contrôlent l'approbation des serveurs définis dans le fichier `.mcp.json` d'un projet.355`disabledMcpServers` et `enabledMcpServers` ne sont pas liés à [`enabledMcpjsonServers`](/docs/fr/settings-reference#enabledmcpjsonservers) et [`disabledMcpjsonServers`](/docs/fr/settings-reference#disabledmcpjsonservers), qui contrôlent l'approbation des serveurs définis dans le fichier `.mcp.json` d'un projet.

356 356 


358 Runtimes clients MCP358 Runtimes clients MCP

359</h3>359</h3>

360 360 

361Claude Code se connecte aux serveurs MCP via l'un de deux runtimes clients. Le runtime v1 est construit sur MCP TypeScript SDK 1.x. Le runtime v2 est le même code sur [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/), qui ajoute la révision du protocole MCP 2026-07-28. Le reste de cette page s'applique aux deux runtimes, sauf où une section nomme le runtime v2.361Claude Code se connecte aux serveurs MCP via l'un de deux runtimes clients. Le runtime v1 est construit sur MCP TypeScript SDK 1.x. Le runtime v2 est le même code sur [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/), qui ajoute la révision de protocole MCP 2026-07-28. Le reste de cette page s'applique aux deux runtimes, sauf si une section nomme le runtime v2.

362 362 

363Claude Code choisit un runtime chaque fois que vous le démarrez et le conserve jusqu'à ce que vous quittiez. Dans les sessions où il [récupère les drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching), il utilise le runtime v2 sur Claude Code v2.1.232 ou ultérieur.363Claude Code choisit un runtime chaque fois que vous le démarrez et le conserve jusqu'à ce que vous quittiez. Dans les sessions où il [récupère les drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching), il utilise le runtime v2 sur Claude Code v2.1.232 ou ultérieur.

364 364 

365Dans les sessions où il ne récupère pas les drapeaux de fonctionnalité, Claude Code utilise le runtime v2 par défaut sur Claude Code v2.1.274 ou ultérieur :365Dans les sessions où il ne récupère pas les drapeaux de fonctionnalité, Claude Code utilise le runtime v2 par défaut sur Claude Code v2.1.274 ou ultérieur :

366 366 

367* Sessions sur Amazon Bedrock, Claude Platform sur AWS, la plateforme Agent de Google Cloud, ou Microsoft Foundry, sauf si une plateforme hôte qui intègre Claude Code définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars)367* Sessions sur Amazon Bedrock, Claude Platform sur AWS, plateforme Agent de Google Cloud, ou Microsoft Foundry, sauf si une plateforme hôte qui intègre Claude Code définit [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/fr/env-vars)

368* Sessions connectées via une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway)368* Sessions connectées via une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway)

369* Sessions où vous désactivez la télémétrie ou la récupération des drapeaux de fonctionnalité, par exemple avec `DISABLE_TELEMETRY`369* Sessions où vous désactivez la télémétrie ou la récupération des drapeaux de fonctionnalité, par exemple avec `DISABLE_TELEMETRY`

370 370 

371Sur v2, Claude Code aussi :371Sur v2, Claude Code fait également :

372 372 

373* Demande aux serveurs HTTP s'ils supportent la révision plus récente, et l'utilise avec ceux qui le font. Il demande également aux serveurs connecteurs claude.ai dans les sessions où il récupère les drapeaux de fonctionnalité. Pour qu'il demande aux serveurs stdio, ou aux serveurs connecteurs dans chaque session, définissez [`MCP_PROTOCOL_NEGOTIATION`](/docs/fr/env-vars) sur `auto`. Il se connecte à tous les autres serveurs comme v1 le fait.373* Demande aux serveurs HTTP s'ils supportent la révision plus récente, et l'utilise avec ceux qui le font. Il demande également aux serveurs connecteurs claude.ai dans les sessions où il récupère les drapeaux de fonctionnalité. Pour qu'il demande aux serveurs stdio, ou aux serveurs connecteurs dans chaque session, définissez [`MCP_PROTOCOL_NEGOTIATION`](/docs/fr/env-vars) à `auto`. Il se connecte à tous les autres serveurs comme v1 le fait.

374* Reçoit les notifications `list_changed` des serveurs sur la révision plus récente sur un [flux qu'il maintient ouvert](#notification-streams-on-the-v2-runtime).374* Reçoit les notifications `list_changed` des serveurs sur la révision plus récente sur un [flux qu'il maintient ouvert](#notification-streams-on-the-v2-runtime).

375* N'enregistre pas un serveur de [canal](#push-messages-with-channels) qui se connecte sur la révision plus récente, car cette révision ne peut pas transporter les messages de canal.375* N'enregistre pas un serveur [channel](#push-messages-with-channels) qui se connecte sur la révision plus récente, car cette révision ne peut pas transporter les messages de canal.

376* Échoue une [connexion OAuth MCP](#authenticate-with-remote-mcp-servers) dont la réponse d'autorisation nomme un émetteur inattendu.376* Échoue une [connexion OAuth MCP](#authenticate-with-remote-mcp-servers) dont la réponse d'autorisation nomme un émetteur inattendu.

377 377 

378Anthropic peut garder un serveur spécifique sur le protocole antérieur, ou hors de ce flux, avec un drapeau de fonctionnalité que Claude Code récupère.378Anthropic peut garder un serveur spécifique sur le protocole antérieur, ou hors de ce flux, avec un drapeau de fonctionnalité que Claude Code récupère.

379 379 

380Pour choisir le runtime vous-même, définissez [`MCP_SDK_GENERATION`](/docs/fr/env-vars) sur `v1` ou `v2`. Pour décider si Claude Code demande, définissez [`MCP_PROTOCOL_NEGOTIATION`](/docs/fr/env-vars) sur `auto` ou `legacy`.380Pour choisir le runtime vous-même, définissez [`MCP_SDK_GENERATION`](/docs/fr/env-vars) à `v1` ou `v2`. Pour décider si Claude Code demande, définissez [`MCP_PROTOCOL_NEGOTIATION`](/docs/fr/env-vars) à `auto` ou `legacy`.

381 381 

382<h3 id="dynamic-tool-updates">382<h3 id="dynamic-tool-updates">

383 Mises à jour dynamiques des outils383 Mises à jour dynamiques des outils


391 Flux de notification sur le runtime v2391 Flux de notification sur le runtime v2

392</h4>392</h4>

393 393 

394Sur le [runtime v2](#mcp-client-runtimes), Claude Code reçoit les notifications `list_changed` d'un serveur sur la révision du protocole plus récente sur un flux qu'il maintient ouvert. Lorsque le flux se ferme, Claude Code le rouvre, avec deux limites :394Sur le [runtime v2](#mcp-client-runtimes), Claude Code reçoit les notifications `list_changed` d'un serveur sur la révision de protocole plus récente sur un flux qu'il maintient ouvert. Lorsque le flux se ferme, Claude Code le rouvre, avec deux limites :

395 395 

396* **Le flux se ferme à nouveau dans les 10 secondes** : Claude Code le rouvre jusqu'à trois fois, puis s'arrête pour cette connexion.396* **Le flux se ferme à nouveau dans les 10 secondes** : Claude Code le rouvre jusqu'à trois fois, puis s'arrête pour cette connexion.

397* **Le flux reste ouvert plus de 10 secondes, puis se ferme**, comme les flux vers les hôtes sans serveur le font couramment : après cinq réouvertures en une heure, Claude Code attend environ six heures avant la suivante.397* **Le flux reste ouvert plus de 10 secondes, puis se ferme**, comme les flux vers les hôtes sans serveur le font couramment : après cinq réouvertures en une heure, Claude Code attend environ six heures avant la suivante.

398 398 

399Jusqu'à ce que le flux se rouvre, vous conservez les outils, invites, et ressources dernièrement récupérés du serveur. Pour récupérer ses modifications plus tôt, reconnectez le serveur depuis `/mcp`.399Jusqu'à ce que le flux se rouvre, vous conservez les outils, invites, et ressources du serveur dernièrement récupérés. Pour récupérer ses modifications plus tôt, reconnectez le serveur à partir de `/mcp`.

400 400 

401<h3 id="automatic-reconnection">401<h3 id="automatic-reconnection">

402 Reconnexion automatique402 Reconnexion automatique


410 410 

411Claude Code reconnecte un serveur distant déconnecté avec un backoff exponentiel : jusqu'à cinq tentatives, en commençant par un délai d'une seconde et en le doublant à chaque fois. Ce que vous voyez dépend de la façon dont vous exécutez Claude Code :411Claude Code reconnecte un serveur distant déconnecté avec un backoff exponentiel : jusqu'à cinq tentatives, en commençant par un délai d'une seconde et en le doublant à chaque fois. Ce que vous voyez dépend de la façon dont vous exécutez Claude Code :

412 412 

413* **Dans une session interactive** : `/mcp` affiche le serveur comme en attente pendant que Claude Code se reconnecte. Après cinq tentatives échouées, Claude Code marque le serveur comme échoué, ou comme ayant besoin d'authentification lorsque le serveur a besoin d'être autorisé à nouveau. Vous pouvez réessayer manuellement depuis `/mcp`.413* **Dans une session interactive** : `/mcp` affiche le serveur comme en attente pendant que Claude Code se reconnecte. Après cinq tentatives échouées, Claude Code marque le serveur comme défaillant, ou comme ayant besoin d'authentification lorsque le serveur a besoin d'être autorisé à nouveau. Lorsqu'il marque le serveur comme défaillant, vous voyez une notification `MCP server "<name>" disconnected · open /mcp to reconnect`. Vous pouvez réessayer manuellement à partir de `/mcp`.

414* **Dans les exécutions [`claude -p`](/docs/fr/headless) et les sessions [Agent SDK](/docs/fr/agent-sdk/overview)** : Claude Code se reconnecte selon le même calendrier, sans panneau `/mcp` pour afficher les tentatives.414* **Dans les exécutions [`claude -p`](/docs/fr/headless) et les sessions [Agent SDK](/docs/fr/agent-sdk/overview)** : Claude Code se reconnecte selon le même calendrier, sans panneau `/mcp` pour afficher les tentatives.

415 415 

416<h4 id="failed-first-connections">416<h4 id="failed-first-connections">

417 Échecs de première connexion417 Échecs de première connexion

418</h4>418</h4>

419 419 

420Lorsque la première connexion d'un serveur HTTP ou SSE échoue avec une erreur transitoire, telle qu'une réponse 5xx, une connexion refusée, ou un délai d'expiration, Claude Code réessaie jusqu'à trois fois. Si la connexion échoue toujours, Claude Code marque le serveur comme échoué. Claude Code réessaie de cette façon au démarrage et lorsqu'un serveur est ajouté en cours de session. Cela inclut un serveur que Claude Code ajoute à une [session cloud](/docs/fr/claude-code-on-the-web) à partir de sa configuration et un serveur que vous ajoutez avec la méthode [`setMcpServers()`](/docs/fr/agent-sdk/typescript) du Agent SDK.420Lorsque la première connexion d'un serveur HTTP ou SSE échoue avec une erreur transitoire, telle qu'une réponse 5xx, une connexion refusée, ou un délai d'expiration, Claude Code réessaie jusqu'à trois fois. Si la connexion échoue toujours, Claude Code marque le serveur comme défaillant. Claude Code réessaie de cette façon au démarrage et lorsqu'un serveur est ajouté en cours de session. Cela inclut un serveur que Claude Code ajoute à une [session cloud](/docs/fr/claude-code-on-the-web) à partir de sa configuration et un serveur que vous ajoutez avec la méthode [`setMcpServers()`](/docs/fr/agent-sdk/typescript) du Agent SDK.

421 421 

422Claude Code ne réessaie pas dans ces cas :422Claude Code ne réessaie pas dans ces cas :

423 423 

424* La première connexion d'un serveur WebSocket424* La première connexion d'un serveur WebSocket

425* Une erreur d'authentification ou non trouvée, car elle nécessite un changement de configuration pour être résolue. Lorsqu'un [`headersHelper`](#use-dynamic-headers-for-custom-authentication) est la seule source du serveur de l'en-tête `Authorization`, Claude Code réessaie quand même une erreur d'authentification, car il réexécute l'assistant à chaque tentative et peut récupérer une nouvelle identifiant425* Une erreur d'authentification ou non trouvée, car elle nécessite une modification de configuration pour être résolue. Lorsqu'un [`headersHelper`](#use-dynamic-headers-for-custom-authentication) est la seule source du serveur de l'en-tête `Authorization`, Claude Code réessaie quand même une erreur d'authentification, car il réexécute l'assistant à chaque tentative et peut récupérer une identifiant frais

426 426 

427<h4 id="failed-discovery-requests">427<h4 id="failed-discovery-requests">

428 Demandes de découverte échouées428 Demandes de découverte échouées

429</h4>429</h4>

430 430 

431Après qu'un serveur se connecte, Claude Code lui envoie des demandes de découverte de capacités telles que `tools/list`, `prompts/list`, et `resources/list`. Claude Code réessaie ces demandes jusqu'à trois fois avec un backoff court après une erreur réseau ou serveur transitoire. Il ne réessaie pas les erreurs d'authentification, les réponses 4xx, ou les délais d'expiration des demandes.431Après qu'un serveur se connecte, Claude Code lui envoie des demandes de découverte de capacités telles que `tools/list`, `prompts/list`, et `resources/list`. Claude Code réessaie ces demandes jusqu'à trois fois avec un backoff court après une erreur réseau ou serveur transitoire. Il ne réessaie pas les erreurs d'authentification, les réponses 4xx, ou les délais d'expiration de demande.

432 432 

433<h4 id="how-claude-learns-that-a-server-failed">433<h4 id="how-claude-learns-that-a-server-failed">

434 Comment Claude apprend qu'un serveur a échoué434 Comment Claude apprend qu'un serveur a échoué


436 436 

437Que Claude Code dise à Claude qu'un serveur configuré n'a pas pu se connecter dépend de la [recherche d'outils](#scale-with-mcp-tool-search), qui est activée par défaut :437Que Claude Code dise à Claude qu'un serveur configuré n'a pas pu se connecter dépend de la [recherche d'outils](#scale-with-mcp-tool-search), qui est activée par défaut :

438 438 

439* Avec la recherche d'outils, Claude Code dit à Claude quel serveur a échoué et son erreur de connexion, donc Claude rapporte l'échec de la connexion dans sa réponse. Claude Code inclut les mêmes informations dans les résultats `ToolSearch` qui ne trouvent aucun outil correspondant.439* Avec la recherche d'outils, Claude Code dit à Claude quel serveur a échoué et son erreur de connexion, donc Claude signale l'échec de la connexion dans sa réponse. Claude Code inclut les mêmes informations dans les résultats `ToolSearch` qui ne trouvent aucun outil correspondant.

440* Dans toute [configuration sans recherche d'outils](#configure-tool-search), Claude Code ne rapporte pas les échecs de connexion du serveur à Claude.440* Dans toute [configuration sans recherche d'outils](#configure-tool-search), Claude Code ne signale pas les échecs de connexion du serveur à Claude.

441 441 

442<h3 id="push-messages-with-channels">442<h3 id="push-messages-with-channels">

443 Pousser des messages avec des canaux443 Pousser des messages avec des canaux


445 445 

446Un serveur MCP peut également pousser des messages directement dans votre session afin que Claude puisse réagir à des événements externes comme les résultats CI, les alertes de surveillance, ou les messages de chat. Pour activer cela, votre serveur déclare la capacité `claude/channel` et vous l'acceptez avec le drapeau `--channels` au démarrage. Voir [Canaux](/docs/fr/channels) pour utiliser un canal officiellement supporté, ou [Référence des canaux](/docs/fr/channels-reference) pour construire le vôtre.446Un serveur MCP peut également pousser des messages directement dans votre session afin que Claude puisse réagir à des événements externes comme les résultats CI, les alertes de surveillance, ou les messages de chat. Pour activer cela, votre serveur déclare la capacité `claude/channel` et vous l'acceptez avec le drapeau `--channels` au démarrage. Voir [Canaux](/docs/fr/channels) pour utiliser un canal officiellement supporté, ou [Référence des canaux](/docs/fr/channels-reference) pour construire le vôtre.

447 447 

448Sur le [runtime v2](#mcp-client-runtimes), si vous définissez [`MCP_PROTOCOL_NEGOTIATION`](/docs/fr/env-vars) sur `auto` et qu'un serveur de canal négocie la révision du protocole MCP 2026-07-28, il ne peut pas livrer les messages de canal, donc Claude Code ne l'enregistre pas comme un canal. Laisser la variable non définie, ou la définir sur `legacy`, garde les serveurs stdio sur la poignée de main antérieure.448Sur le [runtime v2](#mcp-client-runtimes), si vous définissez [`MCP_PROTOCOL_NEGOTIATION`](/docs/fr/env-vars) à `auto` et qu'un serveur de canal négocie la révision de protocole MCP 2026-07-28, il ne peut pas livrer les messages de canal, donc Claude Code ne l'enregistre pas comme un canal. Laisser la variable non définie, ou la définir à `legacy`, garde les serveurs stdio sur la poignée de main antérieure.

449 449 

450<Tip>450<Tip>

451 Conseils :451 Conseils :


462 * Utilisez `/mcp` pour vous authentifier auprès des serveurs distants qui nécessitent une authentification OAuth 2.0462 * Utilisez `/mcp` pour vous authentifier auprès des serveurs distants qui nécessitent une authentification OAuth 2.0

463</Tip>463</Tip>

464 464 

465Le `timeout` par serveur est une limite de temps mur dur par appel d'outil, et les notifications de progression du serveur ne l'étendent pas. Les valeurs inférieures à 1000 sont ignorées et tombent à `MCP_TOOL_TIMEOUT`, ou à sa valeur par défaut d'environ 28 heures lorsque cette variable n'est pas définie. Pour un serveur HTTP, SSE, ou [connecteur claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai), il y a aussi un deuxième minuteur par demande qui couvre chaque demande jusqu'au premier octet de réponse du serveur. Claude Code définit ce minuteur au plus grand de trois valeurs : 60 secondes, le délai d'expiration de l'outil qui s'applique au serveur, et `MCP_TIMEOUT`. La valeur par défaut de 28 heures d'un `MCP_TOOL_TIMEOUT` non défini n'entre pas dans cette comparaison, et une valeur inférieure à 60 secondes ne raccourcit pas le minuteur. Les serveurs stdio et WebSocket n'ont pas de minuteur par demande.465Le `timeout` par serveur est une limite de temps mur dur par appel d'outil, et les notifications de progression du serveur ne l'étendent pas. Les valeurs inférieures à 1000 sont ignorées et tombent à `MCP_TOOL_TIMEOUT`, ou à sa valeur par défaut d'environ 28 heures lorsque cette variable n'est pas définie. Pour un serveur HTTP, SSE, ou [connecteur claude.ai](/docs/fr/mcp#use-mcp-servers-from-claude-ai), il y a également un deuxième minuteur par demande qui couvre chaque demande jusqu'au premier octet de réponse du serveur. Claude Code définit ce minuteur à la plus grande de trois valeurs : 60 secondes, le délai d'expiration de l'outil qui s'applique au serveur, et `MCP_TIMEOUT`. La valeur par défaut de 28 heures d'un `MCP_TOOL_TIMEOUT` non défini n'entre pas dans cette comparaison, et une valeur inférieure à 60 secondes ne raccourcit pas le minuteur. Les serveurs stdio et WebSocket n'ont pas de minuteur par demande.

466 466 

467Un `timeout` par serveur d'au moins 1000 agit également comme un plancher sur le délai d'inactivité décrit ci-dessous : Claude Code n'abandonne jamais les appels d'outil de ce serveur pour inactivité plus tôt que le `timeout` par serveur. Nécessite Claude Code v2.1.203 ou ultérieur.467Un `timeout` par serveur d'au moins 1000 agit également comme un plancher sur le délai d'inactivité décrit ci-dessous : Claude Code n'abandonne jamais les appels d'outil de ce serveur pour inactivité plus tôt que le `timeout` par serveur. Nécessite Claude Code v2.1.203 ou ultérieur.

468 468 

469Un appel d'outil à un serveur MCP qui n'envoie aucune réponse et aucune notification de progression pendant la fenêtre d'inactivité abandonne avec une erreur au lieu d'attendre la limite de temps mur. Le délai d'inactivité nécessite Claude Code v2.1.187 ou ultérieur. Il s'applique à tous les types de serveurs sauf les serveurs IDE et les serveurs en processus du SDK. La fenêtre d'inactivité par défaut est de cinq minutes pour les serveurs HTTP, SSE, WebSocket, et [connecteur claude.ai](#use-mcp-servers-from-claude-ai), et de 30 minutes pour les serveurs stdio. Avant la v2.1.203, les serveurs stdio étaient exempts du délai d'inactivité.469Un appel d'outil à un serveur MCP qui n'envoie aucune réponse et aucune notification de progression pendant la fenêtre d'inactivité abandonne avec une erreur au lieu d'attendre la limite de temps mur. Il s'applique à tous les types de serveurs sauf les serveurs IDE et les serveurs en processus du SDK. La fenêtre d'inactivité par défaut est de cinq minutes pour les serveurs HTTP, SSE, WebSocket, et [connecteur claude.ai](#use-mcp-servers-from-claude-ai), et de 30 minutes pour les serveurs stdio. Avant la v2.1.203, les serveurs stdio étaient exempts du délai d'inactivité.

470 470 

471Définissez la variable d'environnement [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/fr/env-vars) en millisecondes pour changer la fenêtre d'inactivité, ou définissez-la sur `0` pour désactiver la vérification.471Définissez la variable d'environnement [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/fr/env-vars) en millisecondes pour changer la fenêtre d'inactivité, ou définissez-la à `0` pour désactiver la vérification.

472 472 

473Ces délais d'expiration limitent la durée d'exécution d'un appel, pas toujours la durée de son blocage de la session : un appel de conversation principale qui s'exécute au-delà de deux minutes se déplace d'abord vers une tâche en arrière-plan. Voir [Arrière-plan automatique des appels d'outil longs](#automatic-backgrounding-of-long-tool-calls).473Ces délais d'expiration limitent la durée pendant laquelle un appel peut s'exécuter, pas toujours la durée pendant laquelle il bloque la session : un appel principal de conversation qui s'exécute au-delà de deux minutes se déplace d'abord vers une tâche en arrière-plan. Voir [Mise en arrière-plan automatique des appels d'outil longs](#automatic-backgrounding-of-long-tool-calls).

474 474 

475<h3 id="automatic-backgrounding-of-long-tool-calls">475<h3 id="automatic-backgrounding-of-long-tool-calls">

476 Arrière-plan automatique des appels d'outil longs476 Mise en arrière-plan automatique des appels d'outil longs

477</h3>477</h3>

478 478 

479Un appel d'outil MCP dans la conversation principale qui s'exécute toujours après deux minutes se déplace vers une tâche en arrière-plan au lieu de bloquer la session. Claude reçoit l'ID de la tâche immédiatement et continue de travailler, et le résultat arrive comme une notification de tâche lorsque l'appel se règle. L'arrière-plan automatique nécessite Claude Code v2.1.212 ou ultérieur.479Un appel d'outil MCP dans la conversation principale qui s'exécute toujours après deux minutes se déplace vers une tâche en arrière-plan au lieu de bloquer la session. Claude reçoit l'ID de la tâche immédiatement et continue de travailler, et le résultat arrive comme une notification de tâche lorsque l'appel se règle. La mise en arrière-plan automatique nécessite Claude Code v2.1.212 ou ultérieur.

480 480 

481La tâche apparaît dans [`/tasks`](/docs/fr/commands#all-commands), où vous pouvez également l'arrêter, et elle ne survit pas à la sortie de la session. Les limites par appel s'appliquent toujours pendant que l'appel s'exécute en arrière-plan : la limite de temps mur définie par le `timeout` par serveur ou [`MCP_TOOL_TIMEOUT`](/docs/fr/env-vars), et le délai d'inactivité défini par [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/fr/env-vars).481La tâche apparaît dans [`/tasks`](/docs/fr/commands#all-commands), où vous pouvez également l'arrêter, et elle ne survit pas à la sortie de la session. Les limites par appel s'appliquent toujours pendant que l'appel s'exécute en arrière-plan : la limite de temps mur définie par le `timeout` par serveur ou [`MCP_TOOL_TIMEOUT`](/docs/fr/env-vars), et le délai d'inactivité défini par [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/fr/env-vars).

482 482 

483Définissez la variable d'environnement [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](/docs/fr/env-vars) en millisecondes pour changer le seuil, ou définissez-la sur `0` pour désactiver l'arrière-plan automatique. Définir `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` sur `1` le désactive également, ainsi que toutes les autres fonctionnalités de tâche en arrière-plan.483Définissez la variable d'environnement [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](/docs/fr/env-vars) en millisecondes pour changer le seuil, ou définissez-la à `0` pour désactiver la mise en arrière-plan automatique. Définir `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` à `1` la désactive également, ainsi que toutes les autres fonctionnalités de tâche en arrière-plan.

484 484 

485Certains appels ne se déplacent jamais vers l'arrière-plan :485Certains appels ne se déplacent jamais vers l'arrière-plan :

486 486 

487* Les appels des [sous-agents](/docs/fr/sub-agents) ; Claude Code met en arrière-plan uniquement les appels de conversation principale487* Appels à partir de [sous-agents](/docs/fr/sub-agents) ; Claude Code met en arrière-plan uniquement les appels de conversation principale

488* Les appels aux serveurs IDE488* Appels aux serveurs IDE

489* Les appels en [mode non interactif](/docs/fr/headless), sauf si `CLAUDE_AUTO_BACKGROUND_TASKS` est défini sur `1`, car une exécution unique peut se terminer avant l'arrivée du résultat489* Appels en [mode non interactif](/docs/fr/headless), sauf si `CLAUDE_AUTO_BACKGROUND_TASKS` est défini à `1`, car une exécution unique peut se terminer avant l'arrivée du résultat

490 490 

491Un appel en attente d'une [boîte de dialogue d'élicitation](#respond-to-mcp-elicitation-requests) ouverte n'est pas mis en arrière-plan pendant que la boîte de dialogue est ouverte ; le serveur est bloqué sur votre entrée, pas lent, donc Claude Code diffère le déplacement jusqu'à la fermeture de la boîte de dialogue.491Un appel en attente d'une [boîte de dialogue d'élicitation](#respond-to-mcp-elicitation-requests) ouverte n'est pas mis en arrière-plan pendant que la boîte de dialogue est ouverte ; le serveur est bloqué sur votre entrée, pas lent, donc Claude Code diffère le déplacement jusqu'à la fermeture de la boîte de dialogue.

492 492 


494 Serveurs MCP fournis par les plugins494 Serveurs MCP fournis par les plugins

495</h3>495</h3>

496 496 

497Les [plugins](/docs/fr/plugins) peuvent regrouper les serveurs MCP qui fournissent des outils et des intégrations lorsque vous activez le plugin. Les serveurs MCP fournis par les plugins fonctionnent de manière identique aux serveurs configurés par l'utilisateur.497[Les plugins](/docs/fr/plugins/overview) peuvent regrouper les serveurs MCP qui fournissent des outils et des intégrations lorsque vous activez le plugin. Les serveurs MCP des plugins fonctionnent de manière identique aux serveurs configurés par l'utilisateur.

498 498 

499**Comment fonctionnent les serveurs MCP fournis par les plugins** :499**Comment fonctionnent les serveurs MCP des plugins** :

500 500 

501* Les plugins définissent les serveurs MCP dans `.mcp.json` à la racine du plugin ou en ligne dans `plugin.json`501* Les plugins définissent les serveurs MCP dans `.mcp.json` à la racine du plugin ou en ligne dans `plugin.json`

502* Lorsque vous activez un plugin, Claude Code démarre automatiquement ses serveurs MCP502* Lorsque vous activez un plugin, Claude Code démarre automatiquement ses serveurs MCP

503* Claude Code offre les outils MCP du plugin aux côtés des outils MCP configurés manuellement503* Claude Code propose les outils MCP des plugins aux côtés des outils MCP configurés manuellement

504* Vous ajoutez et supprimez les serveurs de plugins en installant ou en désinstallant le plugin, pas avec les commandes `/mcp`. Vous pouvez toujours [basculer un serveur de plugin installé](#disable-a-server-without-removing-it) dans `/mcp`, ce qui arrête Claude Code de s'y connecter sans supprimer le plugin504* Vous ajoutez et supprimez les serveurs de plugins en installant ou en désinstallant le plugin, pas avec les commandes `/mcp`. Vous pouvez toujours [basculer un serveur de plugin installé](#disable-a-server-without-removing-it) dans `/mcp`, ce qui arrête Claude Code de s'y connecter sans supprimer le plugin

505 505 

506**Exemple de configuration MCP du plugin** :506**Exemple de configuration MCP de plugin** :

507 507 

508Dans `.mcp.json` à la racine du plugin :508Dans `.mcp.json` à la racine du plugin :

509 509 


535}535}

536```536```

537 537 

538**Fonctionnalités MCP du plugin** :538**Fonctionnalités MCP des plugins** :

539 539 

540* **Cycle de vie automatique** : les serveurs se connectent et se déconnectent à ces points :540* **Cycle de vie automatique** : les serveurs se connectent et se déconnectent à ces points :

541 * Au démarrage de la session, Claude Code connecte automatiquement les serveurs des plugins activés. Dans `/mcp`, un serveur de plugin distant (HTTP ou SSE) que vous avez utilisé auparavant peut afficher le statut [`cached`](#server-status-detail) à la place ; Claude Code le connecte lorsque Claude appelle pour la première fois l'un de ses outils541 * Au démarrage de la session, Claude Code connecte automatiquement les serveurs des plugins activés. Dans `/mcp`, un serveur de plugin distant (HTTP ou SSE) que vous avez utilisé auparavant peut afficher le statut [`cached`](#server-status-detail) à la place ; Claude Code le connecte lorsque Claude appelle pour la première fois l'un de ses outils

542 * Si vous activez ou désactivez un plugin pendant une session, Claude Code connecte ou déconnecte ses serveurs MCP lorsque la modification s'applique. [Appliquer les modifications de plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) décrit quand c'est le cas. Dans une session sans terminal interactif, `/reload-plugins` ne connecte ou ne déconnecte pas les serveurs MCP du plugin ; ces modifications prennent effet dans votre prochaine session542 * Si vous activez ou désactivez un plugin pendant une session, Claude Code connecte ou déconnecte ses serveurs MCP lorsque la modification s'applique. [Appliquer les modifications de plugin sans redémarrer](/docs/fr/plugins/cli-reference#reload-plugins) décrit quand c'est le cas. Dans une session sans terminal interactif, `/reload-plugins` ne connecte ni ne déconnecte les serveurs MCP des plugins ; ces modifications prennent effet dans votre session suivante

543 * Lorsque vous rechargez, Claude Code conserve les connexions en direct des serveurs de plugins dont la configuration est inchangée, et fait de même lorsque vous [remplacez la liste des serveurs MCP de la session](/docs/fr/agent-sdk/typescript#mcpsetserversresult) à partir du Agent SDK sans les nommer543 * Lorsque vous rechargez, Claude Code conserve les connexions actives des serveurs de plugins dont la configuration est inchangée, et fait de même lorsque vous [remplacez la liste des serveurs MCP de la session](/docs/fr/agent-sdk/typescript#mcpsetserversresult) à partir du Agent SDK sans les nommer

544 * Lorsque vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code connecte les serveurs des plugins que les paramètres du nouveau répertoire activent et déconnecte les serveurs des plugins qui ne sont plus activés, donc vous n'avez pas besoin d'exécuter `/reload-plugins` après le déplacement544 * Lorsque vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code connecte les serveurs des plugins que les paramètres du nouveau répertoire activent et déconnecte les serveurs des plugins qui ne sont plus activés, afin que vous n'ayez pas besoin d'exécuter `/reload-plugins` après le déplacement

545 * Dans les [sessions web](/docs/fr/claude-code-on-the-web), un appel MCP à un serveur de plugin qui n'est pas encore connecté, comme juste après qu'une session inactive se réveille, démarre le serveur à la demande et attend qu'il se connecte545 * Dans les [sessions cloud](/docs/fr/claude-code-on-the-web), un appel MCP à un serveur de plugin qui n'est pas encore connecté, tel que juste après le réveil d'une session inactive, démarre le serveur à la demande et attend qu'il se connecte

546* **Espaces réservés de chemin** : `${CLAUDE_PLUGIN_ROOT}` se résout au répertoire d'installation du plugin, `${CLAUDE_PLUGIN_DATA}` à son répertoire d'[état persistant](/docs/fr/plugins-reference#persistent-data-directory), et `${CLAUDE_PROJECT_DIR}` à la racine du projet stable. La substitution s'applique à :546* **Espaces réservés de chemin** : `${CLAUDE_PLUGIN_ROOT}` se résout au répertoire d'installation du plugin, `${CLAUDE_PLUGIN_DATA}` à son répertoire d'[état persistant](/docs/fr/plugins/components#path-variables-and-persistent-data), et `${CLAUDE_PROJECT_DIR}` à la racine de projet stable. La substitution s'applique à :

547 * serveurs `stdio` : `command`, `args`, `env`547 * serveurs `stdio` : `command`, `args`, `env`

548 * serveurs `http`, `sse`, et `ws` : `url`, `headers`, et `headersHelper`. Avant la v2.1.195, `headersHelper` transmettait l'espace réservé comme une chaîne littérale548 * serveurs `http`, `sse`, et `ws` : `url`, `headers`, et `headersHelper`. Avant la v2.1.195, `headersHelper` transmettait l'espace réservé comme une chaîne littérale

549* **Accès à l'environnement utilisateur** : accès aux mêmes variables d'environnement que les serveurs configurés manuellement549* **Accès à l'environnement utilisateur** : accès aux mêmes variables d'environnement que les serveurs configurés manuellement

550* **Types de transport multiples** : support pour les transports stdio, SSE, HTTP, et WebSocket, bien que le support du transport puisse varier selon le serveur550* **Types de transport multiples** : support pour les transports stdio, SSE, HTTP, et WebSocket, bien que le support de transport puisse varier selon le serveur

551 551 

552Les serveurs de plugins apparaissent dans `/mcp` avec des indicateurs montrant qu'ils proviennent des plugins.552Les serveurs de plugins apparaissent dans `/mcp` avec des indicateurs montrant qu'ils proviennent de plugins.

553 553 

554**Noms d'outils MCP du plugin** :554**Noms d'outils MCP des plugins** :

555 555 

556Les outils d'un serveur MCP regroupé par un plugin incluent à la fois le nom du plugin et la clé du serveur dans leur nom appelable. La forme complète est `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, où tout caractère en dehors de `A-Z`, `a-z`, `0-9`, `_`, et `-` est remplacé par `_`. Pour le serveur `database-tools` regroupé dans un plugin nommé `my-plugin`, un outil `query` est appelable comme :556Les outils d'un serveur MCP regroupé dans un plugin incluent à la fois le nom du plugin et la clé du serveur dans leur nom appelable. La forme complète est `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, où tout caractère en dehors de `A-Z`, `a-z`, `0-9`, `_`, et `-` est remplacé par `_`. Pour le serveur `database-tools` regroupé dans un plugin nommé `my-plugin`, un outil `query` est appelable comme :

557 557 

558```558```

559mcp__plugin_my-plugin_database-tools__query559mcp__plugin_my-plugin_database-tools__query

560```560```

561 561 

562Utilisez ce nom complet lorsque vous référencez l'outil dans les [règles de permission](/docs/fr/permissions), la liste `allowed-tools` d'une compétence, le [champ `tools` d'un sous-agent](/docs/fr/sub-agents#available-tools), ou un [correspondant de hook](/docs/fr/hooks#match-mcp-tools). Un correspondant de hook écrit contre la clé du serveur nu, tel que `mcp__database-tools__.*`, ne se déclenche jamais pour un serveur regroupé par un plugin.562Utilisez ce nom complet lorsque vous référencez l'outil dans les [règles de permission](/docs/fr/permissions), la liste `allowed-tools` d'une compétence, le champ `tools` d'un [sous-agent](/docs/fr/sub-agents#available-tools), ou un [matcher de hook](/docs/fr/hooks#match-mcp-tools). Un matcher de hook écrit contre la clé de serveur nue, tel que `mcp__database-tools__.*`, ne se déclenche jamais pour un serveur regroupé dans un plugin.

563 563 

564Le serveur lui-même s'enregistre sous le nom scoped `plugin:<plugin-name>:<server-name>`, tel que `plugin:my-plugin:database-tools`. Utilisez ce nom où un nom de serveur configuré est attendu, tel que le [champ `server` d'un hook `mcp_tool`](/docs/fr/hooks#mcp-tool-hook-fields).564Le serveur lui-même s'enregistre sous le nom scoped `plugin:<plugin-name>:<server-name>`, tel que `plugin:my-plugin:database-tools`. Utilisez ce nom où un nom de serveur configuré est attendu, tel que le champ `server` d'un [hook `mcp_tool`](/docs/fr/hooks#mcp-tool-hook-fields).

565 565 

566Voir la [référence des composants du plugin](/docs/fr/plugins-reference#mcp-servers) pour les détails sur le regroupement des serveurs MCP avec les plugins.566Voir la [référence des composants de plugin](/docs/fr/plugins/components#mcp-servers) pour les détails sur le regroupement des serveurs MCP avec les plugins.

567 567 

568<h2 id="mcp-installation-scopes">568<h2 id="mcp-installation-scopes">

569 Portées d'installation MCP569 Portées d'installation MCP


6661. Portée locale6661. Portée locale

6672. Portée du projet6672. Portée du projet

6683. Portée utilisateur6683. Portée utilisateur

6694. [Serveurs fournis par les plugins](/docs/fr/plugins)6694. [Serveurs fournis par les plugins](/docs/fr/plugins/components#mcp-servers)

6705. [Connecteurs claude.ai](#use-mcp-servers-from-claude-ai)6705. [Connecteurs claude.ai](#use-mcp-servers-from-claude-ai)

671 671 

672Les trois portées correspondent aux doublons par nom. Les plugins et les connecteurs correspondent par point de terminaison, donc celui qui pointe vers la même URL ou commande qu'un serveur ci-dessus est traité comme un doublon.672Les trois portées correspondent aux doublons par nom. Les plugins et les connecteurs correspondent par point de terminaison, donc celui qui pointe vers la même URL ou commande qu'un serveur ci-dessus est traité comme un doublon.


876 S'authentifier à partir de la ligne de commande876 S'authentifier à partir de la ligne de commande

877</h3>877</h3>

878 878 

879À partir de la v2.1.186, `claude mcp login <name>` exécute le flux OAuth d'un serveur configuré directement depuis votre shell, vous n'avez donc pas besoin d'ouvrir le panneau `/mcp` dans une session.879La commande `claude mcp login <name>` exécute le flux OAuth d'un serveur configuré directement depuis votre shell, vous n'avez donc pas besoin d'ouvrir le panneau `/mcp` dans une session.

880 880 

881```bash theme={null}881```bash theme={null}

882claude mcp login sentry882claude mcp login sentry


884 884 

885Pour effacer les identifiants stockés ultérieurement, exécutez `claude mcp logout <name>`.885Pour effacer les identifiants stockés ultérieurement, exécutez `claude mcp logout <name>`.

886 886 

887À partir de la v2.1.191, la commande détecte lorsqu'aucun navigateur local n'est disponible, par exemple lors d'une session SSH ou sur Linux sans serveur d'affichage, et imprime l'URL d'autorisation au lieu d'essayer d'ouvrir un navigateur. Ouvrez l'URL sur votre machine locale, puis collez l'URL de redirection complète de la barre d'adresse de votre navigateur à l'invite. La commande a besoin d'un terminal interactif pour l'étape de collage, donc connectez-vous avec `ssh -t`. Passez `--no-browser` pour forcer l'invite d'URL même lorsqu'un navigateur local est détecté.887`claude mcp login` détecte lorsqu'aucun navigateur local n'est disponible, par exemple lors d'une session SSH ou sur Linux sans serveur d'affichage, et imprime l'URL d'autorisation au lieu d'essayer d'ouvrir un navigateur. Ouvrez l'URL sur votre machine locale, puis collez l'URL de redirection complète de la barre d'adresse de votre navigateur à l'invite. La commande a besoin d'un terminal interactif pour l'étape de collage, donc connectez-vous avec `ssh -t`. Passez `--no-browser` pour forcer l'invite d'URL même lorsqu'un navigateur local est détecté.

888 888 

889```bash theme={null}889```bash theme={null}

890claude mcp login sentry --no-browser890claude mcp login sentry --no-browser


1085Claude Code définit ces variables d'environnement lors de l'exécution de l'assistant :1085Claude Code définit ces variables d'environnement lors de l'exécution de l'assistant :

1086 1086 

1087| Variable | Valeur |1087| Variable | Valeur |

1088| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------- |1088| :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------- |

1089| `CLAUDE_CODE_MCP_SERVER_NAME` | le nom du serveur MCP |1089| `CLAUDE_CODE_MCP_SERVER_NAME` | le nom du serveur MCP |

1090| `CLAUDE_CODE_MCP_SERVER_URL` | l'URL du serveur MCP |1090| `CLAUDE_CODE_MCP_SERVER_URL` | l'URL du serveur MCP |

1091| `CLAUDE_PLUGIN_ROOT` | le répertoire racine du plugin. Défini uniquement lorsqu'un [plugin](/docs/fr/plugins-reference#mcp-servers) fournit le serveur |1091| `CLAUDE_PLUGIN_ROOT` | le répertoire racine du plugin. Défini uniquement lorsqu'un [plugin](/docs/fr/plugins/components#mcp-servers) fournit le serveur |

1092 1092 

1093Utilisez-les pour écrire un script d'assistant unique qui sert plusieurs serveurs MCP.1093Utilisez-les pour écrire un script d'assistant unique qui sert plusieurs serveurs MCP.

1094 1094 

1095Un `headersHelper` fourni par un plugin ne peut pas référencer les valeurs [`${user_config.*}`](/docs/fr/plugins-reference#user-configuration) du plugin, car la commande s'exécute via un shell. Claude Code signale le serveur comme mal configuré avec une [erreur](/docs/fr/errors#plugin-command-references-user-config) et ne substitue pas la valeur. Mettez `${user_config.KEY}` dans le champ `headers` du serveur à la place, qui n'est pas analysé par shell, ou faites en sorte que le script d'assistant lise la valeur à partir d'un fichier de configuration. Avant la v2.1.207, `headersHelper` substituait les valeurs `${user_config.*}`.1095Un `headersHelper` fourni par un plugin ne peut pas référencer les valeurs [`${user_config.*}`](/docs/fr/plugins/manifest-reference#user-configuration) du plugin, car la commande s'exécute via un shell. Claude Code signale le serveur comme mal configuré avec une [erreur](/docs/fr/errors#plugin-command-references-user-config) et ne substitue pas la valeur. Mettez `${user_config.KEY}` dans le champ `headers` du serveur à la place, qui n'est pas analysé par shell, ou faites en sorte que le script d'assistant lise la valeur à partir d'un fichier de configuration. Avant la v2.1.207, `headersHelper` substituait les valeurs `${user_config.*}`.

1096 1096 

1097<h4 id="where-the-helper-runs">1097<h4 id="where-the-helper-runs">

1098 Où l'assistant s'exécute1098 Où l'assistant s'exécute


1102 1102 

1103| Où vous avez configuré le serveur | Répertoire de travail |1103| Où vous avez configuré le serveur | Répertoire de travail |

1104| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------- |1104| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------- |

1105| Un [plugin](/docs/fr/plugins-reference#mcp-servers) | Le répertoire racine du plugin. Nécessite Claude Code v2.1.195 ou ultérieur |1105| Un [plugin](/docs/fr/plugins/components#mcp-servers) | Le répertoire racine du plugin. Nécessite Claude Code v2.1.195 ou ultérieur |

1106| Un `.mcp.json` de projet ou un serveur de [portée locale](#local-scope) | Le répertoire du projet dans lequel le serveur est déclaré |1106| Un `.mcp.json` de projet ou un serveur de [portée locale](#local-scope) | Le répertoire du projet dans lequel le serveur est déclaré |

1107| Un fichier agent dans votre projet, un serveur de l'option `mcpServers` du SDK ou de la méthode `setMcpServers()`, ou [`--mcp-config`](/docs/fr/cli-reference) | Le [répertoire de travail principal](/docs/fr/permissions#working-directories) de la session |1107| Un fichier agent dans votre projet, un serveur de l'option `mcpServers` du SDK ou de la méthode `setMcpServers()`, ou [`--mcp-config`](/docs/fr/cli-reference) | Le [répertoire de travail principal](/docs/fr/permissions#working-directories) de la session |

1108| [Portée utilisateur](#user-scope), [MCP géré](/docs/fr/managed-mcp), un [connecteur claude.ai](#use-mcp-servers-from-claude-ai), ou un fichier agent en dehors de votre projet, y compris un d'un répertoire `--add-dir` | Votre répertoire de configuration, `~/.claude` sauf si vous avez défini [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars) |1108| [Portée utilisateur](#user-scope), [MCP géré](/docs/fr/managed-mcp), un [connecteur claude.ai](#use-mcp-servers-from-claude-ai), ou un fichier agent en dehors de votre projet, y compris un d'un répertoire `--add-dir` | Votre répertoire de configuration, `~/.claude` sauf si vous avez défini [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars) |


1235 </Step>1235 </Step>

1236</Steps>1236</Steps>

1237 1237 

1238Claude Code marque un connecteur comme `managed` dans `/mcp` et dans le gestionnaire [`/plugin`](/docs/fr/plugins) lorsque votre organisation gère son authentification dans claude.ai. Le statut managed ne change pas la façon dont Claude Code se connecte au connecteur ou applique les [contrôles d'outils](#organization-controls-on-connector-tools) de votre organisation.1238Claude Code marque un connecteur comme `managed` dans `/mcp` et dans le gestionnaire [`/plugin`](/docs/fr/plugins/install) lorsque votre organisation gère son authentification dans claude.ai. Le statut managed ne change pas la façon dont Claude Code se connecte au connecteur ou applique les [contrôles d'outils](#organization-controls-on-connector-tools) de votre organisation.

1239 1239 

1240Les connecteurs auxquels vous ne vous êtes jamais connecté sont réduits derrière une ligne `Show unused connectors` à la fin de la section claude.ai, de sorte qu'une liste fournie par l'organisation ne remplit pas le panneau. Sélectionnez la ligne pour les développer. Un connecteur auquel vous vous êtes connecté avant reste visible même s'il a actuellement besoin d'une nouvelle authentification.1240Les connecteurs auxquels vous ne vous êtes jamais connecté sont réduits derrière une ligne `Show unused connectors` à la fin de la section claude.ai, de sorte qu'une liste fournie par l'organisation ne remplit pas le panneau. Sélectionnez la ligne pour les développer. Un connecteur auquel vous vous êtes connecté avant reste visible même s'il a actuellement besoin d'une nouvelle authentification.

1241 1241 

monitoring-usage.md +312 −306

Details

64}64}

65```65```

66 66 

67Claude Code ignore les [variables d'exportateur OpenTelemetry](/docs/fr/settings-reference#variables-claude-code-ignores-in-env) dans le `.claude/settings.json` et `.claude/settings.local.json` d'un référentiel, donc un référentiel ne peut pas les utiliser pour activer la télémétrie, choisir où elle va ou capturer du contenu. Définissez-les dans les paramètres gérés, ou laissez chaque développeur les définir dans son shell ou `~/.claude/settings.json`. Un référentiel peut toujours désactiver un signal en définissant son sélecteur d'exportateur, tel que `OTEL_LOGS_EXPORTER`, sur `none`, sauf si les paramètres gérés, un fichier `--settings` ou l'environnement à partir duquel vous lancez Claude Code définit cette variable.

68 

67Claude Code ne transmet pas les variables d'environnement `OTEL_*` aux sous-processus qu'il génère, y compris l'outil Bash, les hooks, les serveurs MCP et les serveurs de langage. Une application instrumentée par OpenTelemetry que vous exécutez via l'outil Bash n'hérite pas du point de terminaison de l'exportateur ou des en-têtes de Claude Code, donc définissez ces variables directement dans la commande si cette application doit exporter sa propre télémétrie.69Claude Code ne transmet pas les variables d'environnement `OTEL_*` aux sous-processus qu'il génère, y compris l'outil Bash, les hooks, les serveurs MCP et les serveurs de langage. Une application instrumentée par OpenTelemetry que vous exécutez via l'outil Bash n'hérite pas du point de terminaison de l'exportateur ou des en-têtes de Claude Code, donc définissez ces variables directement dans la commande si cette application doit exporter sa propre télémétrie.

68 70 

69<h3 id="how-managed-settings-lock-the-otlp-destination">71<h3 id="how-managed-settings-lock-the-otlp-destination">


101 Variables de configuration courantes103 Variables de configuration courantes

102</h3>104</h3>

103 105 

104Ces variables configurent les exportateurs, les points de terminaison et le comportement d'export pour tous les déploiements. Si vous définissez une variable de point de terminaison ou de protocole par signal, telle que `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, Claude Code l'utilise à la place de la variable générique pour ce signal. Si vous définissez une variable d'en-têtes par signal, telle que `OTEL_EXPORTER_OTLP_METRICS_HEADERS`, Claude Code la fusionne avec la variable générique `OTEL_EXPORTER_OTLP_HEADERS` pour ce signal. Sur les machines avec des paramètres gérés, voir [Comment les paramètres gérés verrouillent la destination OTLP](#how-managed-settings-lock-the-otlp-destination) pour savoir ce que Claude Code supprime.106Ces variables configurent les exportateurs, les points de terminaison et le comportement d'export pour tous les déploiements.

107 

108Si vous définissez une variable de point de terminaison ou de protocole par signal, telle que `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, Claude Code l'utilise à la place de la variable générique pour ce signal. Si vous définissez une variable d'en-têtes par signal, telle que `OTEL_EXPORTER_OTLP_METRICS_HEADERS`, Claude Code la fusionne avec la variable générique `OTEL_EXPORTER_OTLP_HEADERS` pour ce signal.

109 

110Sur les machines avec des paramètres gérés, voir [Comment les paramètres gérés verrouillent la destination OTLP](#how-managed-settings-lock-the-otlp-destination) pour savoir ce que Claude Code supprime.

105 111 

106| Variable d'environnement | Description | Exemples de valeurs |112| Variable d'environnement | Description | Exemples de valeurs |

107| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |113| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


531| `session.id` | Identifiant de session unique | `OTEL_METRICS_INCLUDE_SESSION_ID` (par défaut : true) |537| `session.id` | Identifiant de session unique | `OTEL_METRICS_INCLUDE_SESSION_ID` (par défaut : true) |

532| `app.version` | Version actuelle de Claude Code | `OTEL_METRICS_INCLUDE_VERSION` (par défaut : false) |538| `app.version` | Version actuelle de Claude Code | `OTEL_METRICS_INCLUDE_VERSION` (par défaut : false) |

533| `app.entrypoint` | Comment la session a été lancée, par exemple `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, ou `claude-vscode` | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (par défaut : false) |539| `app.entrypoint` | Comment la session a été lancée, par exemple `cli`, `sdk-cli`, `sdk-ts`, `sdk-py`, ou `claude-vscode` | `OTEL_METRICS_INCLUDE_ENTRYPOINT` (par défaut : false) |

534| `organization.id` | UUID de l'organisation (si authentifié) | Toujours inclus si disponible |540| `organization.id` | UUID de l'organisation (si authentifié) | Toujours inclus quand disponible |

535| `user.account_uuid` | UUID du compte (si authentifié) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |541| `user.account_uuid` | UUID du compte (si authentifié) | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |

536| `user.account_id` | ID du compte au format balisé correspondant aux API d'administration Anthropic (si authentifié), tel que `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |542| `user.account_id` | ID du compte au format balisé correspondant aux API d'administration Anthropic (si authentifié), par exemple `user_01BWBeN28...` | `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` (par défaut : true) |

537| `user.id` | Identifiant anonyme aléatoire généré à la première exécution et conservé dans `~/.claude.json`. Il ne contient aucune information personnelle et n'est pas dérivé de votre compte Claude. La suppression du fichier produit une nouvelle valeur sans rapport à la prochaine exécution. | Toujours inclus |543| `user.id` | Identifiant anonyme aléatoire généré à la première exécution et persisté dans `~/.claude.json`. Il ne contient aucune information personnelle et n'est pas dérivé de votre compte Claude. La suppression du fichier produit une nouvelle valeur sans rapport à la prochaine exécution. | Toujours inclus |

538| `user.email` | Adresse e-mail de l'utilisateur, de votre connexion ou, dans une [session cloud](/docs/fr/claude-code-on-the-web), des identifiants de la session elle-même | Toujours inclus si disponible |544| `user.email` | Adresse e-mail de l'utilisateur, de votre connexion ou, dans une [session cloud](/docs/fr/claude-code-on-the-web), des identifiants de la session elle-même | Toujours inclus quand disponible |

539| `terminal.type` | Type de terminal, tel que `iTerm.app`, `vscode`, `cursor`, ou `tmux` | Toujours inclus si détecté |545| `terminal.type` | Type de terminal, par exemple `iTerm.app`, `vscode`, `cursor`, ou `tmux` | Toujours inclus quand détecté |

540| Clés de `OTEL_RESOURCE_ATTRIBUTES` | Attributs personnalisés que vous définissez, tels que `department` ou `team.id`. Voir [Support des organisations multi-équipes](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (par défaut : true) |546| Clés de `OTEL_RESOURCE_ATTRIBUTES` | Attributs personnalisés que vous définissez, par exemple `department` ou `team.id`. Voir [Support des organisations multi-équipes](#multi-team-organization-support) | `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` (par défaut : true) |

541| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | L'identité du référentiel de la session, dérivée de sa télécommande `origin`. Voir [Attributs du référentiel](#repository-attributes) | `OTEL_METRICS_INCLUDE_REPOSITORY` (par défaut : false). Nécessite Claude Code v2.1.269 ou ultérieur |547| `vcs.repository.url.full`, `vcs.owner.name`, `vcs.repository.name`, `vcs.provider.name` | L'identité du référentiel de la session, dérivée de sa télécommande `origin`. Voir [Attributs du référentiel](#repository-attributes) | `OTEL_METRICS_INCLUDE_REPOSITORY` (par défaut : false). Nécessite Claude Code v2.1.269 ou ultérieur |

542 548 

543Lorsque Claude Code est connecté à une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), la CLI marque les exportations avec l'identité authentifiée de la session de la passerelle : `user.id` est le sujet IdP plutôt qu'un identifiant d'installation anonyme, `user.email` est l'e-mail connecté, et `user.groups` porte l'appartenance au groupe IdP sous forme de chaîne séparée par des virgules. Chaque exportation porte également `identity.source: gateway-oidc`. L'identité de la passerelle est appliquée en dernier, donc les clés `user.*` et `identity.*` définies via `OTEL_RESOURCE_ATTRIBUTES` sont ignorées sur les sessions de passerelle.549Quand Claude Code est connecté à une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway), l'interface de ligne de commande marque les exportations avec l'identité authentifiée de la session de la passerelle : `user.id` est le sujet IdP plutôt qu'un identifiant d'installation anonyme, `user.email` est l'e-mail connecté, et `user.groups` porte l'appartenance au groupe IdP sous forme de chaîne séparée par des virgules. Chaque exportation porte également `identity.source: gateway-oidc`. L'identité de la passerelle est appliquée en dernier, donc les clés `user.*` et `identity.*` définies via `OTEL_RESOURCE_ATTRIBUTES` sont ignorées sur les sessions de passerelle.

544 550 

545Les événements incluent en outre les attributs suivants. Ceux-ci ne sont jamais attachés aux métriques car ils causeraient une cardinalité non bornée :551Les événements incluent en outre les attributs suivants. Ceux-ci ne sont jamais attachés aux métriques car ils causeraient une cardinalité non bornée :

546 552 

547* `prompt.id` : UUID corrélant une invite utilisateur avec tous les événements suivants jusqu'à l'invite suivante. Voir [Attributs de corrélation d'événements](#event-correlation-attributes).553* `prompt.id` : UUID corrélant une invite utilisateur avec tous les événements suivants jusqu'à l'invite suivante. Voir [Attributs de corrélation d'événements](#event-correlation-attributes).

548* `workspace.host_paths` : répertoires d'espace de travail hôte sélectionnés dans l'application de bureau, sous forme de tableau de chaînes554* `workspace.host_paths` : répertoires d'espace de travail hôte sélectionnés dans l'application de bureau, sous forme de tableau de chaînes

549* `workflow.run_id` : identifiant d'exécution, préfixé `wf_`, sur les événements d'API et d'outil émis par les agents qui appartiennent à une exécution d'outil [Workflow](/docs/fr/workflows). Le filtrage des événements par un `workflow.run_id` reconstruit les demandes d'API et les résultats d'outil de cette exécution. L'identifiant couvre les agents que le script de flux de travail génère et tous les agents que ceux-ci génèrent à leur tour, tels que les invocations de compétences. Il correspond à l'identifiant d'exécution signalé dans le résultat de l'outil Workflow. Absent sur tous les autres événements. Nécessite Claude Code v2.1.202 ou ultérieur555* `workflow.run_id` : identifiant d'exécution, préfixé `wf_`, sur les événements API et d'outils émis par les agents qui appartiennent à une exécution d'outil [Workflow](/docs/fr/workflows). Le filtrage des événements par un `workflow.run_id` reconstruit les demandes API et les résultats d'outils de cette exécution. L'identifiant couvre les agents que le script de flux de travail génère et tous les agents que ceux-ci génèrent à leur tour, par exemple les invocations de compétences. Il correspond à l'identifiant d'exécution signalé dans le résultat de l'outil Workflow. Absent sur tous les autres événements. Nécessite Claude Code v2.1.202 ou ultérieur

550* `workflow.name` : nom du flux de travail, le `meta.name` de son script, émis aux côtés de `workflow.run_id`. Les noms de flux de travail intégrés apparaissent textuellement lorsque l'exécution exécute le script intégré non modifié. Les noms créés par l'utilisateur, y compris les copies modifiées de scripts intégrés, sont remplacés par `custom` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini. Nécessite Claude Code v2.1.202 ou ultérieur556* `workflow.name` : nom du flux de travail, le `meta.name` de son script, émis aux côtés de `workflow.run_id`. Les noms de flux de travail intégrés apparaissent textuellement quand l'exécution exécute le script intégré non modifié. Les noms créés par l'utilisateur, y compris les copies modifiées de scripts intégrés, sont remplacés par `custom` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini. Nécessite Claude Code v2.1.202 ou ultérieur

551 557 

552<h4 id="repository-attributes">558<h4 id="repository-attributes">

553 Attributs du référentiel559 Attributs du référentiel

554</h4>560</h4>

555 561 

556Définissez `OTEL_METRICS_INCLUDE_REPOSITORY=true` pour baliser les métriques et les événements avec l'identité du référentiel de la session, afin qu'un collecteur partagé puisse attribuer l'utilisation par référentiel. Nécessite Claude Code v2.1.269 ou ultérieur.562Définissez `OTEL_METRICS_INCLUDE_REPOSITORY=true` pour balisez les métriques et les événements avec l'identité du référentiel de la session, afin qu'un collecteur partagé puisse attribuer l'utilisation par référentiel. Nécessite Claude Code v2.1.269 ou ultérieur.

557 563 

558Claude Code dérive ces attributs une fois par session à partir de la télécommande `origin` du référentiel. Les télécommandes HTTPS et SSH d'un référentiel produisent des valeurs identiques :564Claude Code dérive ces attributs une fois par session à partir de la télécommande `origin` du référentiel. Les télécommandes HTTPS et SSH d'un référentiel produisent des valeurs identiques :

559 565 

560| Attribut | Valeur |566| Attribut | Valeur |

561| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |567| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

562| `vcs.repository.url.full` | L'URL du navigateur du référentiel sans `.git`, telle que `https://github.com/example-org/example-repo` |568| `vcs.repository.url.full` | L'URL du navigateur du référentiel sans `.git`, par exemple `https://github.com/example-org/example-repo` |

563| `vcs.owner.name` | Le chemin du propriétaire ou du groupe, tel que `example-org` ; omis lorsque le chemin de la télécommande a un seul segment |569| `vcs.owner.name` | Le chemin du propriétaire ou du groupe, par exemple `example-org` ; omis quand le chemin de la télécommande a un seul segment |

564| `vcs.repository.name` | Le nom du référentiel nu, tel que `example-repo` |570| `vcs.repository.name` | Le nom du référentiel nu, par exemple `example-repo` |

565| `vcs.provider.name` | `github`, `gitlab`, `bitbucket`, ou `gitea` lorsque Claude Code reconnaît l'hôte de la télécommande ou la forme de l'URL comme l'un de ces fournisseurs ; omis sinon |571| `vcs.provider.name` | `github`, `gitlab`, `bitbucket`, ou `gitea` quand Claude Code reconnaît l'hôte de la télécommande ou la forme de l'URL comme l'un de ces fournisseurs ; omis sinon |

566 572 

567Les valeurs sont en minuscules, et les identifiants, les chaînes de requête et les fragments de l'URL de la télécommande n'apparaissent jamais en eux. Les attributs sont omis lorsque la session n'a pas de télécommande `origin`, lorsque la télécommande n'est pas en forme d'URL, ou lorsque le seul référentiel englobant est votre répertoire personnel.573Les valeurs sont en minuscules, et les identifiants, chaînes de requête et fragments de l'URL de la télécommande n'apparaissent jamais en eux. Les attributs sont omis quand la session n'a pas de télécommande `origin`, quand la télécommande n'a pas la forme d'une URL, ou quand le seul référentiel englobant est votre répertoire personnel.

568 574 

569Une clé `vcs.*` que vous déclarez dans [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) remplace la valeur dérivée pour cette clé. Si vous déclarez `vcs.repository.url.full`, Claude Code ne lit jamais la télécommande et rapporte uniquement les clés que vous déclarez.575Une clé `vcs.*` que vous déclarez dans [`OTEL_RESOURCE_ATTRIBUTES`](#multi-team-organization-support) remplace la valeur dérivée pour cette clé. Si vous déclarez `vcs.repository.url.full`, Claude Code ne lit jamais la télécommande et signale uniquement les clés que vous déclarez.

570 576 

571Les attributs circulent uniquement vers vos propres exportateurs ; la télémétrie d'Anthropic supprime chaque clé `vcs.*`.577Les attributs ne circulent que vers vos propres exportateurs ; la télémétrie d'Anthropic supprime chaque clé `vcs.*`.

572 578 

573<h3 id="metrics">579<h3 id="metrics">

574 Métriques580 Métriques


578 584 

579| Nom de la métrique | Description | Unité |585| Nom de la métrique | Description | Unité |

580| ------------------------------------- | -------------------------------------------------------------- | ------ |586| ------------------------------------- | -------------------------------------------------------------- | ------ |

581| `claude_code.session.count` | Nombre de sessions CLI démarrées | none |587| `claude_code.session.count` | Nombre de sessions CLI démarrées | aucune |

582| `claude_code.lines_of_code.count` | Nombre de lignes de code modifiées | none |588| `claude_code.lines_of_code.count` | Nombre de lignes de code modifiées | aucune |

583| `claude_code.pull_request.count` | Nombre de demandes de tirage créées | none |589| `claude_code.pull_request.count` | Nombre de demandes de tirage créées | aucune |

584| `claude_code.commit.count` | Nombre de commits git créés | none |590| `claude_code.commit.count` | Nombre de commits git créés | aucune |

585| `claude_code.cost.usage` | Coût de la session Claude Code | USD |591| `claude_code.cost.usage` | Coût de la session Claude Code | USD |

586| `claude_code.token.usage` | Nombre de jetons utilisés | tokens |592| `claude_code.token.usage` | Nombre de jetons utilisés | tokens |

587| `claude_code.code_edit_tool.decision` | Nombre de décisions de permission de l'outil d'édition de code | none |593| `claude_code.code_edit_tool.decision` | Nombre de décisions de permission de l'outil d'édition de code | aucune |

588| `claude_code.active_time.total` | Temps actif total | s |594| `claude_code.active_time.total` | Temps actif total | s |

589 595 

590Lorsque `prometheus` est le seul exportateur listé dans `OTEL_METRICS_EXPORTER`, Claude Code omet les unités `USD`, `tokens`, et `s` des métriques exportées afin que le scrape reste au format texte Prometheus valide. Les noms de métriques ne changent pas, et les configurations qui combinent des exportateurs, telles que `otlp,prometheus`, conservent les unités. Avant v2.1.216, le scrape Prometheus incluait des lignes `# UNIT` uniquement OpenMetrics que certains scrapers rejetaient.596Quand `prometheus` est le seul exportateur listé dans `OTEL_METRICS_EXPORTER`, Claude Code omet les unités `USD`, `tokens`, et `s` des métriques exportées afin que le scrape reste au format texte Prometheus valide. Les noms de métriques ne changent pas, et les configurations qui combinent des exportateurs, par exemple `otlp,prometheus`, conservent les unités. Avant v2.1.216, le scrape Prometheus incluait des lignes `# UNIT` uniquement OpenMetrics que certains scrapers rejetaient.

591 597 

592<h3 id="metric-details">598<h3 id="metric-details">

593 Détails des métriques599 Détails des métriques


596Chaque métrique inclut les attributs standard listés ci-dessus. Les métriques avec des attributs supplémentaires spécifiques au contexte sont notées ci-dessous.602Chaque métrique inclut les attributs standard listés ci-dessus. Les métriques avec des attributs supplémentaires spécifiques au contexte sont notées ci-dessous.

597 603 

598<h4 id="session-counter">604<h4 id="session-counter">

599 Compteur de sessions605 Compteur de session

600</h4>606</h4>

601 607 

602Incrémenté au début de chaque session.608Incrémenté au début de chaque session.


604**Attributs** :610**Attributs** :

605 611 

606* Tous les [attributs standard](#standard-attributes)612* Tous les [attributs standard](#standard-attributes)

607* `start_type` : Comment la session a été démarrée. L'un de `"fresh"`, `"resume"`, `"continue"`, ou `"agents_view"`. La valeur `"agents_view"` identifie le processus du tableau de bord `claude agents`, une interface utilisateur locale lancée par l'utilisateur plutôt qu'une session conversationnelle. Filtrez sur cette valeur pour séparer les lancements de processus d'interface utilisateur des sessions conversationnelles dans vos tableaux de bord.613* `start_type` : Comment la session a été démarrée. L'une de `"fresh"`, `"resume"`, `"continue"`, ou `"agents_view"`. La valeur `"agents_view"` identifie le processus du tableau de bord `claude agents`, une interface utilisateur locale lancée par l'utilisateur plutôt qu'une session conversationnelle. Filtrez sur cette valeur pour séparer les lancements de processus d'interface utilisateur des sessions conversationnelles dans vos tableaux de bord.

608 614 

609<h4 id="lines-of-code-counter">615<h4 id="lines-of-code-counter">

610 Compteur de lignes de code616 Compteur de lignes de code

611</h4>617</h4>

612 618 

613Incrémenté lorsque du code est ajouté ou supprimé.619Incrémenté quand du code est ajouté ou supprimé.

614 620 

615**Attributs** :621**Attributs** :

616 622 


619* `model` : Identifiant du modèle pour le modèle qui a effectué la modification (par exemple, « claude-sonnet-5 »)625* `model` : Identifiant du modèle pour le modèle qui a effectué la modification (par exemple, « claude-sonnet-5 »)

620 626 

621<h4 id="pull-request-counter">627<h4 id="pull-request-counter">

622 Compteur de demandes de tirage628 Compteur de demande de tirage

623</h4>629</h4>

624 630 

625Incrémenté lors de la création de demandes de tirage ou de demandes de fusion via une commande shell ou un outil MCP.631Incrémenté quand Claude Code crée une demande de tirage ou de fusion via une commande shell ou un outil MCP.

626 632 

627**Attributs** :633**Attributs** :

628 634 

629* Tous les [attributs standard](#standard-attributes)635* Tous les [attributs standard](#standard-attributes)

630 636 

631<h4 id="commit-counter">637<h4 id="commit-counter">

632 Compteur de commits638 Compteur de commit

633</h4>639</h4>

634 640 

635Incrémenté lors de la création de commits git via Claude Code.641Incrémenté lors de la création de commits git via Claude Code.


639* Tous les [attributs standard](#standard-attributes)645* Tous les [attributs standard](#standard-attributes)

640 646 

641<h4 id="cost-counter">647<h4 id="cost-counter">

642 Compteur de coûts648 Compteur de coût

643</h4>649</h4>

644 650 

645Incrémenté après chaque demande d'API.651Incrémenté après chaque demande API.

646 652 

647**Attributs** :653**Attributs** :

648 654 

649* Tous les [attributs standard](#standard-attributes)655* Tous les [attributs standard](#standard-attributes)

650* `model` : Identifiant du modèle (par exemple, « claude-sonnet-5 »)656* `model` : Identifiant du modèle (par exemple, « claude-sonnet-5 »)

651* `query_source` : Catégorie du sous-système qui a émis la demande. L'un de `"main"`, `"subagent"`, ou `"auxiliary"`657* `query_source` : Catégorie du sous-système qui a émis la demande. L'une de `"main"`, `"subagent"`, ou `"auxiliary"`

652* `speed` : `"fast"` lorsque la demande a utilisé le mode rapide. Absent sinon658* `speed` : `"fast"` quand la demande a utilisé le mode rapide. Absent sinon

653* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande : `"low"`, `"medium"`, `"high"`, `"xhigh"`, ou `"max"`. Absent lorsque le modèle ne supporte pas l'effort.659* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande : `"low"`, `"medium"`, `"high"`, `"xhigh"`, ou `"max"`. Absent quand Claude Code n'envoie aucun niveau d'effort, par exemple sur un modèle qui ne supporte pas l'effort.

654* `agent.name` : Type de sous-agent qui a émis la demande. Les noms d'agents intégrés et les agents des plugins de la place de marché officielle apparaissent textuellement. Les autres noms d'agents définis par l'utilisateur sont remplacés par `"custom"`. Absent lorsque la demande n'a pas été émise par un type de sous-agent nommé.660* `agent.name` : Type de sous-agent qui a émis la demande. Les noms d'agents intégrés et les agents des plugins de la place de marché officielle apparaissent textuellement. Les autres noms d'agents définis par l'utilisateur sont remplacés par `"custom"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini. Absent quand la demande n'a pas été émise par un type de sous-agent nommé.

655* `skill.name` : Compétence active pour la demande, définie par l'outil Skill, une commande `/`, ou héritée par un sous-agent généré. Les noms de compétences intégrées, groupées, définies par l'utilisateur et de plugin de place de marché officielle apparaissent textuellement. Les noms de compétences de plugin tiers sont remplacés par `"third-party"`. Absent lorsqu'aucune compétence n'est active.661* `skill.name` : Compétence active pour la demande, définie par l'outil Skill, une commande `/`, ou héritée par un sous-agent généré. Les noms de compétences intégrés, groupés, définis par l'utilisateur et de la place de marché officielle des plugins apparaissent textuellement. Les noms de compétences des plugins tiers sont remplacés par `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini. Absent quand aucune compétence n'est active.

656* `plugin.name` : Plugin propriétaire lorsque la compétence active ou le sous-agent est fourni par un plugin. Les noms de plugins de place de marché officielle apparaissent textuellement. Les noms de plugins tiers sont remplacés par `"third-party"`. Absent lorsque ni la compétence ni le sous-agent n'a de plugin propriétaire.662* `plugin.name` : Plugin propriétaire quand la compétence active ou le sous-agent est fourni par un plugin. Les noms de plugins de la place de marché officielle apparaissent textuellement. Les noms de plugins tiers sont remplacés par `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini. Absent quand ni la compétence ni le sous-agent n'a de plugin propriétaire.

657* `marketplace.name` : Place de marché à partir de laquelle le plugin propriétaire a été installé. Émis uniquement pour les plugins de place de marché officielle. Absent sinon.663* `marketplace.name` : Place de marché à partir de laquelle le plugin propriétaire a été installé. Émis uniquement pour les plugins de la place de marché officielle. Absent sinon.

658* `mcp_server.name` : Serveur MCP dont le résultat d'outil cette demande a consommé. Les noms de serveurs intégrés, proxifiés par claude.ai et de registre officiel apparaissent textuellement. Les noms de serveurs configurés par l'utilisateur sont remplacés par `"custom"`. Absent lorsque la demande n'a consommé aucun résultat d'outil MCP. Avant v2.1.222, Claude Code définissait cet attribut sur chaque demande après un appel d'outil MCP, pas seulement sur les demandes qui ont consommé un résultat d'outil, donc les tableaux de bord qui l'agrègent montrent une baisse après la mise à niveau.664* `mcp_server.name` : Serveur MCP dont le résultat de l'outil cette demande a consommé. Les noms de serveurs intégrés, proxifiés par claude.ai, et de registre officiel apparaissent textuellement. Les noms de serveurs configurés par l'utilisateur sont remplacés par `"custom"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini. Absent quand la demande n'a consommé aucun résultat d'outil MCP. Avant v2.1.222, Claude Code définissait cet attribut sur chaque demande après un appel d'outil MCP, pas seulement sur les demandes qui ont consommé un résultat d'outil, donc les tableaux de bord qui l'agrègent montrent une baisse après la mise à niveau.

659* `mcp_tool.name` : Outil MCP dont le résultat cette demande a consommé, avec le même comportement de masquage et de version que `mcp_server.name`. Absent lorsque la demande n'a consommé aucun résultat d'outil MCP.665* `mcp_tool.name` : Outil MCP dont le résultat cette demande a consommé, avec le même comportement de rédaction et de version que `mcp_server.name`. Absent quand la demande n'a consommé aucun résultat d'outil MCP.

660 666 

661<h4 id="token-counter">667<h4 id="token-counter">

662 Compteur de jetons668 Compteur de jetons

663</h4>669</h4>

664 670 

665Incrémenté après chaque demande d'API.671Incrémenté après chaque demande API.

666 672 

667**Attributs** :673**Attributs** :

668 674 

669* Tous les [attributs standard](#standard-attributes)675* Tous les [attributs standard](#standard-attributes)

670* `type` : (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)676* `type` : (`"input"`, `"output"`, `"cacheRead"`, `"cacheCreation"`)

671* `model` : Identifiant du modèle (par exemple, « claude-sonnet-5 »)677* `model` : Identifiant du modèle (par exemple, « claude-sonnet-5 »)

672* `query_source` : Catégorie du sous-système qui a émis la demande. L'un de `"main"`, `"subagent"`, ou `"auxiliary"`678* `query_source` : Catégorie du sous-système qui a émis la demande. L'une de `"main"`, `"subagent"`, ou `"auxiliary"`

673* `speed` : `"fast"` lorsque la demande a utilisé le mode rapide. Absent sinon679* `speed` : `"fast"` quand la demande a utilisé le mode rapide. Absent sinon

674* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande. Voir [Compteur de coûts](#cost-counter) pour les détails.680* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande. Voir [Compteur de coût](#cost-counter) pour les détails.

675* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coûts](#cost-counter) pour les définitions et le comportement de masquage.681* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coût](#cost-counter) pour les définitions et le comportement de rédaction.

676 682 

677<h4 id="code-edit-tool-decision-counter">683<h4 id="code-edit-tool-decision-counter">

678 Compteur de décisions de l'outil d'édition de code684 Compteur de décision de l'outil d'édition de code

679</h4>685</h4>

680 686 

681Incrémenté lorsque l'utilisateur accepte ou rejette l'utilisation de l'outil Edit, Write ou NotebookEdit.687Incrémenté quand l'utilisateur accepte ou rejette l'utilisation de l'outil Edit, Write, ou NotebookEdit.

682 688 

683**Attributs** :689**Attributs** :

684 690 

685* Tous les [attributs standard](#standard-attributes)691* Tous les [attributs standard](#standard-attributes)

686* `tool_name` : Nom de l'outil (`"Edit"`, `"Write"`, `"NotebookEdit"`)692* `tool_name` : Nom de l'outil (`"Edit"`, `"Write"`, `"NotebookEdit"`)

687* `decision` : Décision de l'utilisateur (`"accept"`, `"reject"`)693* `decision` : Décision de l'utilisateur (`"accept"`, `"reject"`)

688* `source` : Source de la décision. L'un de `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, ou `"user_reject"`. Voir l'[Événement de décision d'outil](#tool-decision-event) pour savoir ce que chaque valeur signifie.694* `source` : D'où provient la décision. L'une de `"config"`, `"hook"`, `"user_permanent"`, `"user_temporary"`, `"user_abort"`, ou `"user_reject"`. Voir l'[événement de décision d'outil](#tool-decision-event) pour ce que chaque valeur signifie.

689* `language` : Langage de programmation du fichier édité, tel que `"TypeScript"`, `"Python"`, `"JavaScript"`, ou `"Markdown"`. Retourne `"unknown"` pour les extensions de fichier non reconnues.695* `language` : Langage de programmation du fichier édité, par exemple `"TypeScript"`, `"Python"`, `"JavaScript"`, ou `"Markdown"`. Retourne `"unknown"` pour les extensions de fichier non reconnues.

690 696 

691<h4 id="active-time-counter">697<h4 id="active-time-counter">

692 Compteur de temps actif698 Compteur de temps actif

693</h4>699</h4>

694 700 

695Suit le temps réel passé à utiliser activement Claude Code, excluant le temps d'inactivité. Cette métrique est incrémentée lors des interactions utilisateur (saisie, lecture des réponses) et lors du traitement CLI (exécution d'outils, génération de réponses IA).701Suit le temps réel passé à utiliser activement Claude Code, excluant le temps d'inactivité. Cette métrique est incrémentée lors des interactions utilisateur, par exemple la saisie et la lecture des réponses, et lors du traitement CLI, par exemple l'exécution d'outils et la génération de réponses IA.

696 702 

697**Attributs** :703**Attributs** :

698 704 


703 Événements709 Événements

704</h3>710</h3>

705 711 

706Claude Code exporte les événements suivants via les journaux/événements OpenTelemetry (lorsque `OTEL_LOGS_EXPORTER` est configuré) :712Claude Code exporte les événements suivants via les journaux/événements OpenTelemetry (quand `OTEL_LOGS_EXPORTER` est configuré) :

707 713 

708<h4 id="event-correlation-attributes">714<h4 id="event-correlation-attributes">

709 Attributs de corrélation d'événements715 Attributs de corrélation d'événements

710</h4>716</h4>

711 717 

712Lorsqu'un utilisateur soumet une invite, Claude Code peut effectuer plusieurs appels d'API et exécuter plusieurs outils. L'attribut `prompt.id` vous permet de lier tous ces événements à l'invite unique qui les a déclenchés.718Quand un utilisateur soumet une invite, Claude Code peut effectuer plusieurs appels API et exécuter plusieurs outils. L'attribut `prompt.id` vous permet de lier tous ces événements à l'invite unique qui les a déclenchés.

713 719 

714| Attribut | Description |720| Attribut | Description |

715| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |721| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

716| `prompt.id` | Identifiant UUID v4 liant tous les événements produits lors du traitement d'une invite utilisateur unique |722| `prompt.id` | Identifiant UUID v4 liant tous les événements produits lors du traitement d'une invite utilisateur unique |

717| `event.sequence` | Compteur basé sur 0 pour ordonner les événements, compté par processus Claude Code plutôt que par session |723| `event.sequence` | Compteur basé sur 0 pour ordonner les événements, compté par processus Claude Code plutôt que par session |

718| `message.uuid` | UUID du message tel que conservé dans la transcription de session, les fichiers `~/.claude/projects/*/*.jsonl`. Présent sur `assistant_response`, sur `api_response_body`, et sur `user_prompt` sauf pour les dispatches de commande, qui peuvent produire zéro ou plusieurs messages. Sur `assistant_response` et `api_response_body`, c'est l'entrée de transcription finale de la réponse, à partir de laquelle le `parentUuid` du tour suivant s'enchaîne. Nécessite Claude Code v2.1.214 ou ultérieur, ou v2.1.274 ou ultérieur sur `api_response_body` |724| `message.uuid` | UUID du message tel que persisté dans la transcription de session, les fichiers `~/.claude/projects/*/*.jsonl`. Présent sur `assistant_response`, sur `api_response_body`, et sur `user_prompt` sauf pour les dispatches de commande, qui peuvent produire zéro ou plusieurs messages. Sur `assistant_response` et `api_response_body`, c'est l'entrée de transcription finale de la réponse, à partir de laquelle le `parentUuid` du tour suivant s'enchaîne. Nécessite Claude Code v2.1.214 ou ultérieur, ou v2.1.274 ou ultérieur sur `api_response_body` |

719| `client_request_id` | UUID généré par le client envoyé en tant qu'en-tête de demande `x-client-request-id`. Présent sur `api_request` et `api_error` sur les connexions d'API propriétaires ; absent sur les backends de fournisseurs tiers et lorsque la demande a été retentée via le fallback non-streaming. Associe une demande à sa réponse et reste disponible pour les défaillances telles que les délais d'expiration qui n'ont jamais produit de `request_id` serveur. Correspond au même attribut sur la plage de trace `llm_request`. Nécessite Claude Code v2.1.214 ou ultérieur |725| `client_request_id` | UUID généré par le client envoyé comme en-tête de demande `x-client-request-id`. Présent sur `api_request` et `api_error` sur les connexions API de première partie ; absent sur les backends de fournisseurs tiers et quand la demande a été retentée via le secours non-streaming. Associe une demande à sa réponse et reste disponible pour les défaillances telles que les délais d'expiration qui n'ont jamais produit un `request_id` serveur. Correspond au même attribut sur la plage de trace `llm_request`. Nécessite Claude Code v2.1.214 ou ultérieur |

720 726 

721Pour tracer toute l'activité déclenchée par une invite unique, filtrez vos événements par une valeur `prompt.id` spécifique. Cela retourne l'événement user\_prompt, tous les événements api\_request, et tous les événements tool\_result qui se sont produits lors du traitement de cette invite.727Pour tracer toute l'activité déclenchée par une invite unique, filtrez vos événements par une valeur `prompt.id` spécifique. Cela retourne l'événement user\_prompt, tous les événements api\_request, et tous les événements tool\_result qui se sont produits lors du traitement de cette invite.

722 728 

723`event.sequence` commence à 0 chaque fois qu'un processus Claude Code démarre et compte jusqu'à la fin de ce processus. Il continue de compter après `/clear`, qui attribue un nouveau `session.id`. Si vous [reprenez une session sans la forker](/docs/fr/how-claude-code-works#resume-or-fork-sessions), la session conserve son `session.id` mais prend ses valeurs `event.sequence` du processus qui l'a reprise, donc au sein d'une session un événement ultérieur peut porter une valeur inférieure à celle d'un événement antérieur, ou en répéter une. Pour ordonner les événements d'une session, triez par `event.timestamp` et utilisez `event.sequence` pour ordonner les événements qui partagent un horodatage.729`event.sequence` commence à 0 chaque fois qu'un processus Claude Code démarre et compte jusqu'à la fin de ce processus. Il continue de compter à travers `/clear`, qui assigne un nouveau `session.id`. Si vous [reprenez une session sans la forker](/docs/fr/how-claude-code-works#resume-or-fork-sessions), la session conserve son `session.id` mais prend ses valeurs `event.sequence` du processus qui l'a reprise, donc dans une session un événement ultérieur peut porter une valeur inférieure à celle d'un événement antérieur, ou en répéter une. Pour ordonner les événements d'une session, triez par `event.timestamp` et utilisez `event.sequence` pour ordonner les événements qui partagent un timestamp.

724 730 

725Pour la reconstruction au niveau des messages, chaque classe d'événement porte une clé qui correspond à un champ dans la transcription de session. Le format d'entrée de transcription est [interne à Claude Code](/docs/fr/sessions#where-transcripts-are-stored) et change entre les versions, donc un pipeline qui joint sur ces champs peut se casser à chaque version ; traitez les jointures comme spécifiques à la version plutôt que comme un contrat stable :731Pour la reconstruction au niveau du message, chaque classe d'événement porte une clé qui correspond à un champ dans la transcription de session. Le format d'entrée de transcription est [interne à Claude Code](/docs/fr/sessions#where-transcripts-are-stored) et change entre les versions, donc un pipeline qui se joint sur ces champs peut se casser à chaque version ; traitez les jointures comme spécifiques à la version plutôt que comme un contrat stable :

726 732 

727* `message.uuid` sur `user_prompt`, `assistant_response`, et `api_response_body`733* `message.uuid` sur `user_prompt`, `assistant_response`, et `api_response_body`

728* `request_id` sur les événements d'API, conservé comme `requestId` sur les entrées d'assistant de la transcription734* `request_id` sur les événements API, persisté comme `requestId` sur les entrées d'assistant de la transcription

729* `tool_use_id` sur les événements `tool_result` et `tool_decision`735* `tool_use_id` sur les événements `tool_result` et `tool_decision`

730 736 

731<h4 id="user-prompt-event">737<h4 id="user-prompt-event">

732 Événement d'invite utilisateur738 Événement d'invite utilisateur

733</h4>739</h4>

734 740 

735Enregistré lorsqu'un utilisateur soumet une invite.741Enregistré quand un utilisateur soumet une invite.

736 742 

737**Nom de l'événement** : `claude_code.user_prompt`743**Nom de l'événement** : `claude_code.user_prompt`

738 744 


740 746 

741* Tous les [attributs standard](#standard-attributes)747* Tous les [attributs standard](#standard-attributes)

742* `event.name` : `"user_prompt"`748* `event.name` : `"user_prompt"`

743* `event.timestamp` : Horodatage ISO 8601749* `event.timestamp` : Timestamp ISO 8601

744* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)750* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

745* `prompt_length` : Longueur de l'invite751* `prompt_length` : Longueur de l'invite

746* `prompt` : Contenu de l'invite. Masqué par défaut. Définissez `OTEL_LOG_USER_PROMPTS=1` pour l'inclure752* `prompt` : Contenu de l'invite. Rédacté par défaut. Définissez `OTEL_LOG_USER_PROMPTS=1` pour l'inclure

747* `message.uuid` : UUID du message utilisateur résultant, correspondant à l'entrée de transcription conservée. Absent sur les dispatches de commande, qui peuvent produire zéro ou plusieurs messages. Nécessite Claude Code v2.1.214 ou ultérieur753* `message.uuid` : UUID du message utilisateur résultant, correspondant à l'entrée de transcription persistée. Absent sur les dispatches de commande, qui peuvent produire zéro ou plusieurs messages. Nécessite Claude Code v2.1.214 ou ultérieur

748* `command_name` : Nom de la commande lorsque l'invite en invoque une. Les noms de commandes intégrées et groupées tels que `compact` ou `debug` sont émis tels quels ; les alias tels que `reset` émettent tels que tapés plutôt que le nom canonique. Les noms de commandes personnalisées, de plugin et MCP s'effondrent en `custom` ou `mcp` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini754* `command_name` : Nom de la commande quand l'invite en invoque une. Les noms de commande intégrés et groupés tels que `compact` ou `debug` sont émis tels quels ; les alias tels que `reset` émettent tels que tapés plutôt que le nom canonique. Les noms de commande personnalisés, de plugins et MCP s'effondrent en `custom` ou `mcp` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini

749* `command_source` : Origine de la commande lorsqu'elle est présente : `builtin`, `custom`, ou `mcp`. Les commandes fournies par les plugins signalent comme `custom`755* `command_source` : Origine de la commande quand présente : `builtin`, `custom`, ou `mcp`. Les commandes fournies par les plugins signalent comme `custom`

750 756 

751<h4 id="assistant-response-event">757<h4 id="assistant-response-event">

752 Événement de réponse d'assistant758 Événement de réponse d'assistant

753</h4>759</h4>

754 760 

755Enregistré après chaque demande d'API qui retourne du contenu textuel du modèle. Seuls les blocs de texte de la réponse sont inclus ; les blocs de réflexion et les blocs d'utilisation d'outil sont exclus. Nécessite Claude Code v2.1.193 ou ultérieur.761Enregistré après chaque demande API qui retourne du contenu textuel du modèle. Seuls les blocs de texte de la réponse sont inclus ; les blocs de réflexion et les blocs d'utilisation d'outils sont exclus. Nécessite Claude Code v2.1.193 ou ultérieur.

756 762 

757**Nom de l'événement** : `claude_code.assistant_response`763**Nom de l'événement** : `claude_code.assistant_response`

758 764 


760 766 

761* Tous les [attributs standard](#standard-attributes)767* Tous les [attributs standard](#standard-attributes)

762* `event.name` : `"assistant_response"`768* `event.name` : `"assistant_response"`

763* `event.timestamp` : Horodatage ISO 8601769* `event.timestamp` : Timestamp ISO 8601

764* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)770* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

765* `response_length` : Longueur du texte de réponse en caractères771* `response_length` : Longueur du texte de réponse en caractères

766* `response` : Texte de réponse, tronqué à la limite de contenu (60 Ko par défaut). Masqué à `<REDACTED>` par défaut. Définissez `OTEL_LOG_ASSISTANT_RESPONSES=1` pour l'inclure. Lorsque `OTEL_LOG_ASSISTANT_RESPONSES` n'est pas défini, `OTEL_LOG_USER_PROMPTS` le contrôle à la place, donc définissez `OTEL_LOG_ASSISTANT_RESPONSES=0` pour garder les réponses masquées tandis que la journalisation des invites est activée772* `response` : Texte de réponse, tronqué à la limite de contenu (60 Ko par défaut). Rédacté à `<REDACTED>` par défaut. Définissez `OTEL_LOG_ASSISTANT_RESPONSES=1` pour l'inclure. Quand `OTEL_LOG_ASSISTANT_RESPONSES` n'est pas défini, `OTEL_LOG_USER_PROMPTS` le contrôle à la place, donc définissez `OTEL_LOG_ASSISTANT_RESPONSES=0` pour garder les réponses rédactées tandis que la journalisation des invites est activée

767* `model` : Identifiant du modèle (par exemple, « claude-sonnet-5 »)773* `model` : Identifiant du modèle (par exemple, « claude-sonnet-5 »)

768* `request_id` : ID de demande d'API Anthropic de l'en-tête `request-id` de la réponse. Présent uniquement lorsque l'API en retourne un774* `request_id` : ID de demande API Anthropic de l'en-tête `request-id` de la réponse. Présent uniquement quand l'API en retourne un

769* `message.uuid` : UUID de l'entrée de transcription finale de la réponse. Une réponse d'API est conservée comme une entrée de transcription par bloc de contenu ; c'est la dernière, à partir de laquelle le `parentUuid` du tour suivant s'enchaîne. Nécessite Claude Code v2.1.214 ou ultérieur775* `message.uuid` : UUID de l'entrée de transcription finale de la réponse. Une réponse API est persistée comme une entrée de transcription par bloc de contenu ; c'est la dernière, à partir de laquelle le `parentUuid` du tour suivant s'enchaîne. Nécessite Claude Code v2.1.214 ou ultérieur

770* `query_source` : Sous-système qui a émis la demande, tel que `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent776* `query_source` : Sous-système qui a émis la demande, par exemple `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent

771 777 

772<h4 id="tool-result-event">778<h4 id="tool-result-event">

773 Événement de résultat d'outil779 Événement de résultat d'outil

774</h4>780</h4>

775 781 

776Enregistré lorsqu'un outil termine son exécution. Non émis si l'appel d'outil a été rejeté ; voir l'[Événement de décision d'outil](#tool-decision-event) pour les rejets.782Enregistré quand un outil termine son exécution. Non émis si l'appel d'outil a été rejeté ; voir l'[événement de décision d'outil](#tool-decision-event) pour les rejets.

777 783 

778**Nom de l'événement** : `claude_code.tool_result`784**Nom de l'événement** : `claude_code.tool_result`

779 785 


781 787 

782* Tous les [attributs standard](#standard-attributes)788* Tous les [attributs standard](#standard-attributes)

783* `event.name` : `"tool_result"`789* `event.name` : `"tool_result"`

784* `event.timestamp` : Horodatage ISO 8601790* `event.timestamp` : Timestamp ISO 8601

785* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)791* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

786* `tool_name` : Nom de l'outil792* `tool_name` : Nom de l'outil

787* `tool_use_id` : Identifiant unique pour cette invocation d'outil. Correspond au `tool_use_id` passé aux hooks, permettant la corrélation entre les événements OTel et les données capturées par les hooks.793* `tool_use_id` : Identifiant unique pour cette invocation d'outil. Correspond au `tool_use_id` passé aux hooks, permettant la corrélation entre les événements OTel et les données capturées par les hooks.

788* `success` : `"true"` ou `"false"`794* `success` : `"true"` ou `"false"`

789* `duration_ms` : Temps d'exécution en millisecondes795* `duration_ms` : Temps d'exécution en millisecondes

790* `error_type` : Chaîne de catégorie d'erreur lorsque l'outil a échoué, telle que `"Error:ENOENT"` ou `"ShellError"`796* `error_type` : Chaîne de catégorie d'erreur quand l'outil a échoué, par exemple `"Error:ENOENT"` ou `"ShellError"`

791* `error` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Message d'erreur complet lorsque l'outil a échoué797* `error` (quand `OTEL_LOG_TOOL_DETAILS=1`) : Message d'erreur complet quand l'outil a échoué

792* `decision_type` : Toujours `"accept"`, puisque cet événement n'est émis qu'après l'exécution de l'outil. Les appels rejetés ne produisent pas de résultat d'outil798* `decision_type` : Toujours `"accept"`, puisque cet événement n'est émis qu'après l'exécution de l'outil. Les appels rejetés ne produisent pas de résultat d'outil

793* `decision_source` : Source de la décision de permission. L'un de `"config"`, `"hook"`, `"user_permanent"`, ou `"user_temporary"`. Voir l'[Événement de décision d'outil](#tool-decision-event) pour savoir ce que chaque valeur signifie. Les sources de rejet uniquement `"user_abort"` et `"user_reject"` n'apparaissent jamais sur cet événement.799* `decision_source` : D'où provient la décision de permission. L'une de `"config"`, `"hook"`, `"user_permanent"`, ou `"user_temporary"`. Voir l'[événement de décision d'outil](#tool-decision-event) pour ce que chaque valeur signifie. Les sources réservées au rejet `"user_abort"` et `"user_reject"` n'apparaissent jamais sur cet événement.

794* `tool_input_size_bytes` : Taille de l'entrée d'outil sérialisée en JSON en octets800* `tool_input_size_bytes` : Taille de l'entrée d'outil sérialisée en JSON en octets

795* `tool_result_size_bytes` : Taille du résultat de l'outil en octets801* `tool_result_size_bytes` : Taille du résultat d'outil en octets

796* `mcp_server_scope` : Identifiant de portée du serveur MCP (pour les outils MCP)802* `mcp_server_scope` : Identifiant de portée du serveur MCP (pour les outils MCP)

797* `vcs.ref.head.revision`, `vcs.ref.head.name`, `vcs.ref.head.type` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : l'identité du commit d'une exécution `git commit` réussie par l'outil Bash ou PowerShell. `vcs.ref.head.revision` est le SHA du commit, `vcs.ref.head.name` est la branche sur laquelle il a été commité, et `vcs.ref.head.type` est `branch`. Le nom et le type sont omis lorsque le commit a été effectué sur un HEAD détaché. Nécessite Claude Code v2.1.269 ou ultérieur803* `vcs.ref.head.revision`, `vcs.ref.head.name`, `vcs.ref.head.type` (quand `OTEL_LOG_TOOL_DETAILS=1`) : l'identité du commit d'une exécution `git commit` réussie par l'outil Bash ou PowerShell. `vcs.ref.head.revision` est le SHA du commit, `vcs.ref.head.name` est la branche sur laquelle il a été commité, et `vcs.ref.head.type` est `branch`. Le nom et le type sont omis quand le commit a été effectué sur un HEAD détaché. Nécessite Claude Code v2.1.269 ou ultérieur

798* `tool_parameters` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Chaîne JSON contenant les paramètres spécifiques à l'outil. Pour les serveurs intégrés de Claude Desktop, dans les sessions que Claude Desktop possède, la paire `mcp_server_name`/`mcp_tool_name` est incluse même avec le drapeau désactivé, la même exception créée par l'hôte que l'[Événement de décision d'outil](#tool-decision-event), nécessitant Claude Code v2.1.214 ou ultérieur. Les paramètres varient selon l'outil :804* `tool_parameters` (quand `OTEL_LOG_TOOL_DETAILS=1`) : Chaîne JSON contenant les paramètres spécifiques à l'outil. Pour les serveurs intégrés de Claude Desktop, dans les sessions que Claude Desktop possède, la paire `mcp_server_name`/`mcp_tool_name` est incluse même avec le drapeau désactivé, la même exception créée par l'hôte que l'[événement de décision d'outil](#tool-decision-event), nécessitant Claude Code v2.1.214 ou ultérieur. Les paramètres varient selon l'outil :

799 * Pour l'outil Bash : inclut `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`, et `git_commit_id` et `git_branch` lorsqu'une commande `git commit` réussit. `git_commit_id` est le SHA complet du commit lorsque le commit est le HEAD du répertoire de travail de la session, et le SHA abrégé de git sinon. `git_branch` est la branche sur laquelle il a été commité, omis sur un HEAD détaché805 * Pour l'outil Bash : inclut `bash_command`, `full_command`, `timeout`, `description`, et `dangerouslyDisableSandbox`, plus `git_commit_id` et `git_branch` quand une commande `git commit` réussit. `git_commit_id` est le SHA du commit complet quand le commit est le HEAD du répertoire de travail de la session, et le SHA abrégé de git sinon. `git_branch` est la branche sur laquelle il a été commité, omis sur un HEAD détaché

800 * Pour l'outil bash d'espace de travail de l'application de bureau, qui rapporte également `tool_name` comme `Bash` : inclut uniquement `bash_command`, `full_command`, et `timeout`806 * Pour l'outil Bash d'espace de travail de l'application de bureau, qui signale également `tool_name` comme `Bash` : inclut uniquement `bash_command`, `full_command`, et `timeout`

801 * Pour les outils MCP : inclut `mcp_server_name`, `mcp_tool_name`807 * Pour les outils MCP : inclut `mcp_server_name`, `mcp_tool_name`

802 * Pour l'outil Skill : inclut `skill_name`808 * Pour l'outil Skill : inclut `skill_name`

803 * Pour l'outil Agent ou l'outil Task hérité : inclut `subagent_type`809 * Pour l'outil Agent ou l'outil Task hérité : inclut `subagent_type`

804* `tool_input` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Arguments d'outil sérialisés en JSON. Les valeurs individuelles dépassant 512 caractères sont tronquées, et la charge utile complète est limitée à environ 4 K caractères. S'applique à tous les outils, y compris les outils MCP.810* `tool_input` (quand `OTEL_LOG_TOOL_DETAILS=1`) : Arguments d'outil sérialisés en JSON. Les valeurs individuelles sur 512 caractères sont tronquées, et la charge utile complète est bornée à environ 4 K caractères. S'applique à tous les outils, y compris les outils MCP.

805 811 

806<h4 id="api-request-event">812<h4 id="api-request-event">

807 Événement de demande d'API813 Événement de demande API

808</h4>814</h4>

809 815 

810Enregistré pour chaque demande d'API à Claude.816Enregistré pour chaque demande API à Claude.

811 817 

812**Nom de l'événement** : `claude_code.api_request`818**Nom de l'événement** : `claude_code.api_request`

813 819 


815 821 

816* Tous les [attributs standard](#standard-attributes)822* Tous les [attributs standard](#standard-attributes)

817* `event.name` : `"api_request"`823* `event.name` : `"api_request"`

818* `event.timestamp` : Horodatage ISO 8601824* `event.timestamp` : Timestamp ISO 8601

819* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)825* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

820* `model` : Modèle utilisé (par exemple, « claude-sonnet-5 »)826* `model` : Modèle utilisé (par exemple, « claude-sonnet-5 »)

821* `cost_usd` : Coût estimé en USD827* `cost_usd` : Coût estimé en USD

822* `cost_usd_micros` : Coût estimé en millionièmes de dollar américain, émis sous forme d'entier828* `cost_usd_micros` : Coût estimé en millionièmes de dollar américain, émis comme un entier

823* `duration_ms` : Durée de la demande en millisecondes829* `duration_ms` : Durée de la demande en millisecondes

824* `input_tokens` : Nombre de jetons d'entrée830* `input_tokens` : Nombre de jetons d'entrée

825* `output_tokens` : Nombre de jetons de sortie831* `output_tokens` : Nombre de jetons de sortie

826* `cache_read_tokens` : Nombre de jetons lus à partir du cache832* `cache_read_tokens` : Nombre de jetons lus du cache

827* `cache_creation_tokens` : Nombre de jetons utilisés pour la création du cache833* `cache_creation_tokens` : Nombre de jetons utilisés pour la création du cache

828* `request_id` : ID de demande d'API Anthropic de l'en-tête `request-id` de la réponse, tel que `"req_011..."`. Présent uniquement lorsque l'API en retourne un.834* `request_id` : ID de demande API Anthropic de l'en-tête `request-id` de la réponse, par exemple `"req_011..."`. Présent uniquement quand l'API en retourne un.

829* `client_request_id` : UUID généré par le client envoyé en tant qu'en-tête de demande `x-client-request-id` ; voir le tableau [attributs de corrélation d'événements](#event-correlation-attributes) pour savoir quand il est présent. Nécessite Claude Code v2.1.214 ou ultérieur835* `client_request_id` : UUID généré par le client envoyé comme en-tête de demande `x-client-request-id` ; voir le tableau [attributs de corrélation d'événements](#event-correlation-attributes) pour quand il est présent. Nécessite Claude Code v2.1.214 ou ultérieur

830* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif836* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif

831* `query_source` : Sous-système qui a émis la demande, tel que `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent837* `query_source` : Sous-système qui a émis la demande, par exemple `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent

832* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande : `"low"`, `"medium"`, `"high"`, `"xhigh"`, ou `"max"`. Absent lorsque le modèle ne supporte pas l'effort.838* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande : `"low"`, `"medium"`, `"high"`, `"xhigh"`, ou `"max"`. Absent quand Claude Code n'envoie aucun niveau d'effort, par exemple sur un modèle qui ne supporte pas l'effort.

833* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coûts](#cost-counter) pour les définitions et le comportement de masquage.839* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coût](#cost-counter) pour les définitions et le comportement de rédaction.

834 840 

835<h4 id="api-error-event">841<h4 id="api-error-event">

836 Événement d'erreur d'API842 Événement d'erreur API

837</h4>843</h4>

838 844 

839Enregistré lorsqu'une demande d'API à Claude échoue.845Enregistré quand une demande API à Claude échoue.

840 846 

841**Nom de l'événement** : `claude_code.api_error`847**Nom de l'événement** : `claude_code.api_error`

842 848 


844 850 

845* Tous les [attributs standard](#standard-attributes)851* Tous les [attributs standard](#standard-attributes)

846* `event.name` : `"api_error"`852* `event.name` : `"api_error"`

847* `event.timestamp` : Horodatage ISO 8601853* `event.timestamp` : Timestamp ISO 8601

848* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)854* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

849* `model` : Modèle utilisé (par exemple, « claude-sonnet-5 »)855* `model` : Modèle utilisé (par exemple, « claude-sonnet-5 »)

850* `error` : Message d'erreur856* `error` : Message d'erreur

851* `status_code` : Code de statut HTTP sous forme de nombre. Absent pour les erreurs non-HTTP telles que les défaillances de connexion.857* `status_code` : Code de statut HTTP en tant que nombre. Absent pour les erreurs non-HTTP telles que les défaillances de connexion.

852* `duration_ms` : Durée de la demande en millisecondes858* `duration_ms` : Durée de la demande en millisecondes

853* `attempt` : Nombre total de tentatives effectuées, y compris la demande initiale (`1` signifie qu'aucune nouvelle tentative ne s'est produite)859* `attempt` : Nombre total de tentatives effectuées, y compris la demande initiale (`1` signifie qu'aucune nouvelle tentative ne s'est produite)

854* `request_id` : ID de demande d'API Anthropic de l'en-tête `request-id` de la réponse, tel que `"req_011..."`. Présent uniquement lorsque l'API en retourne un.860* `request_id` : ID de demande API Anthropic de l'en-tête `request-id` de la réponse, par exemple `"req_011..."`. Présent uniquement quand l'API en retourne un.

855* `client_request_id` : UUID généré par le client envoyé en tant qu'en-tête de demande `x-client-request-id`. Disponible même lorsqu'une défaillance telle qu'un délai d'expiration ou une erreur de connexion n'a jamais produit de `request_id` serveur ; voir le tableau [attributs de corrélation d'événements](#event-correlation-attributes) pour savoir quand il est présent. Nécessite Claude Code v2.1.214 ou ultérieur861* `client_request_id` : UUID généré par le client envoyé comme en-tête de demande `x-client-request-id`. Disponible même quand une défaillance telle qu'un délai d'expiration ou une erreur de connexion n'a jamais produit un `request_id` serveur ; voir le tableau [attributs de corrélation d'événements](#event-correlation-attributes) pour quand il est présent. Nécessite Claude Code v2.1.214 ou ultérieur

856* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif862* `speed` : `"fast"` ou `"normal"`, indiquant si le mode rapide était actif

857* `query_source` : Sous-système qui a émis la demande, tel que `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent863* `query_source` : Sous-système qui a émis la demande, par exemple `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent

858* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande. Absent lorsque le modèle ne supporte pas l'effort.864* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande. Absent quand Claude Code n'envoie aucun niveau d'effort, par exemple sur un modèle qui ne supporte pas l'effort.

859* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coûts](#cost-counter) pour les définitions et le comportement de masquage.865* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coût](#cost-counter) pour les définitions et le comportement de rédaction.

860 866 

861<h4 id="api-refusal-event">867<h4 id="api-refusal-event">

862 Événement de refus d'API868 Événement de refus API

863</h4>869</h4>

864 870 

865Enregistré lorsqu'une demande d'API retourne `stop_reason: "refusal"`. Les refus arrivent sur un flux de réponse réussi plutôt que comme une erreur HTTP, donc l'événement `api_error` ne se déclenche pas pour eux. Cet événement vous permet de suivre la fréquence des refus et de regrouper les refus par les mêmes attributs que `api_request` et `api_error`.871Enregistré quand une demande API retourne `stop_reason: "refusal"`. Les refus arrivent sur un flux de réponse réussi plutôt que comme une erreur HTTP, donc l'événement `api_error` ne se déclenche pas pour eux. Cet événement vous permet de suivre la fréquence des refus et de regrouper les refus par les mêmes attributs que `api_request` et `api_error`.

866 872 

867**Nom de l'événement** : `claude_code.api_refusal`873**Nom de l'événement** : `claude_code.api_refusal`

868 874 


870 876 

871* Tous les [attributs standard](#standard-attributes)877* Tous les [attributs standard](#standard-attributes)

872* `event.name` : `"api_refusal"`878* `event.name` : `"api_refusal"`

873* `event.timestamp` : Horodatage ISO 8601879* `event.timestamp` : Timestamp ISO 8601

874* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)880* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

875* `model` : Identifiant du modèle de la demande881* `model` : Identifiant du modèle de la demande

876* `request_id` : ID de demande d'API Anthropic de l'en-tête `request-id` de la réponse, tel que `"req_011..."`. Présent uniquement lorsque l'API en retourne un.882* `request_id` : ID de demande API Anthropic de l'en-tête `request-id` de la réponse, par exemple `"req_011..."`. Présent uniquement quand l'API en retourne un.

877* `query_source` : Sous-système qui a émis la demande, tel que `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent. Voir [`api_request`](#api-request-event) pour les définitions.883* `query_source` : Sous-système qui a émis la demande, par exemple `"repl_main_thread"`, `"compact"`, ou un nom de sous-agent. Voir [`api_request`](#api-request-event) pour les définitions.

878* `speed` : Soit `"fast"` lorsque le [Mode rapide](/docs/fr/fast-mode) est actif, soit `"normal"`884* `speed` : Soit `"fast"` quand le [Mode rapide](/docs/fr/fast-mode) est actif, soit `"normal"`

879* `attempt` : Numéro de tentative de nouvelle tentative. La première tentative est `1`.885* `attempt` : Numéro de tentative de nouvelle tentative. La première tentative est `1`.

880* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande. Absent lorsque le modèle ne supporte pas l'effort.886* `effort` : [Niveau d'effort](/docs/fr/model-config#adjust-effort-level) appliqué à la demande. Absent quand Claude Code n'envoie aucun niveau d'effort, par exemple sur un modèle qui ne supporte pas l'effort.

881* `server_fallback_hop` : `true` lorsque le basculement de modèle côté serveur de l'API a déjà réessayé ce refus sur un modèle différent, donc l'utilisateur n'a pas vu ce refus particulier. `false` lorsque la demande s'est terminée par un refus. Un seul tour peut émettre à la fois un événement `true` hop et un événement final `false` ultérieur lorsque le modèle de secours refuse également.887* `server_fallback_hop` : `true` quand le secours du modèle côté serveur de l'API a déjà retesté ce refus sur un modèle différent, donc l'utilisateur n'a pas vu ce refus particulier. `false` quand la demande s'est terminée par un refus. Un seul tour peut émettre à la fois un événement `true` hop et un événement `false` final ultérieur quand le modèle de secours refuse également.

882* `has_category` : `true` lorsque la réponse de l'API contenait une `stop_details.category` de `"cyber"`, `"bio"`, `"frontier_llm"`, ou `"reasoning_extraction"`. `false` lorsque la réponse ne contenait aucune catégorie ou une valeur en dehors de cet ensemble. Absent lorsque `server_fallback_hop` est `true`, car les blocs hop ne portent pas `stop_details`.888* `has_category` : `true` quand la réponse API portait une `stop_details.category` de `"cyber"`, `"bio"`, `"frontier_llm"`, ou `"reasoning_extraction"`. `false` quand la réponse ne portait aucune catégorie ou une valeur en dehors de cet ensemble. Absent quand `server_fallback_hop` est `true`, car les blocs hop ne portent pas `stop_details`.

883* `has_explanation` : `true` lorsque la réponse de l'API contenait une `stop_details.explanation`, sinon `false`. Absent lorsque `server_fallback_hop` est `true`.889* `has_explanation` : `true` quand la réponse API portait une `stop_details.explanation`, sinon `false`. Absent quand `server_fallback_hop` est `true`.

884* `category` : La valeur `stop_details.category` de la réponse de l'API. L'un de `"cyber"`, `"bio"`, `"frontier_llm"`, ou `"reasoning_extraction"`. Présent uniquement lorsque `OTEL_LOG_TOOL_DETAILS=1` est défini et `has_category` est `true`.890* `category` : La valeur `stop_details.category` de la réponse API. L'une de `"cyber"`, `"bio"`, `"frontier_llm"`, ou `"reasoning_extraction"`. Présent uniquement quand `OTEL_LOG_TOOL_DETAILS=1` est défini et `has_category` est `true`.

885* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coûts](#cost-counter) pour les définitions et le comportement de masquage.891* `agent.name`, `skill.name`, `plugin.name`, `marketplace.name`, `mcp_server.name`, `mcp_tool.name` : Attribution de compétence, plugin, agent et MCP pour la demande. Voir [Compteur de coût](#cost-counter) pour les définitions et le comportement de rédaction.

886 892 

887<h4 id="api-request-body-event">893<h4 id="api-request-body-event">

888 Événement de corps de demande d'API894 Événement de corps de demande API

889</h4>895</h4>

890 896 

891Enregistré pour chaque tentative de demande d'API lorsque `OTEL_LOG_RAW_API_BODIES` est défini. Un événement est émis par tentative, donc les nouvelles tentatives avec des paramètres ajustés produisent chacune leur propre événement.897Enregistré pour chaque tentative de demande API quand `OTEL_LOG_RAW_API_BODIES` est défini. Un événement est émis par tentative, donc les nouvelles tentatives avec des paramètres ajustés produisent chacune leur propre événement.

892 898 

893**Nom de l'événement** : `claude_code.api_request_body`899**Nom de l'événement** : `claude_code.api_request_body`

894 900 


896 902 

897* Tous les [attributs standard](#standard-attributes)903* Tous les [attributs standard](#standard-attributes)

898* `event.name` : `"api_request_body"`904* `event.name` : `"api_request_body"`

899* `event.timestamp` : Horodatage ISO 8601905* `event.timestamp` : Timestamp ISO 8601

900* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)906* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

901* `body` : Paramètres de demande de l'API Messages sérialisés en JSON, tels que l'invite système, les messages et les outils, tronqués à la limite de contenu (60 Ko par défaut). Le contenu de la réflexion étendue dans les tours d'assistant antérieurs est masqué. Émis uniquement en mode en ligne (`OTEL_LOG_RAW_API_BODIES=1`).907* `body` : Paramètres de demande API Messages sérialisés en JSON, par exemple l'invite système, les messages et les outils, tronqués à la limite de contenu (60 Ko par défaut). Le contenu de réflexion étendue dans les tours d'assistant antérieurs est rédacté. Émis uniquement en mode en ligne (`OTEL_LOG_RAW_API_BODIES=1`).

902* `body_ref` : Chemin absolu vers un fichier `<dir>/<uuid>.request.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).908* `body_ref` : Chemin absolu vers un fichier `<dir>/<uuid>.request.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

903* `body_length` : Longueur du corps non tronqué. Octets UTF-8 lorsque `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unités de code UTF-16 lorsque `=1`909* `body_length` : Longueur du corps non tronqué. Octets UTF-8 quand `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unités de code UTF-16 quand `=1`

904* `body_truncated` : `"true"` lorsque la troncature en ligne s'est produite. Absent en mode fichier et lorsqu'aucune troncature ne s'est produite.910* `body_truncated` : `"true"` quand la troncature en ligne s'est produite. Absent en mode fichier et quand aucune troncature ne s'est produite.

905* `model` : Identifiant du modèle à partir des paramètres de demande911* `model` : Identifiant du modèle à partir des paramètres de demande

906* `query_source` : Sous-système qui a émis la demande (par exemple, `"compact"`)912* `query_source` : Sous-système qui a émis la demande (par exemple, `"compact"`)

907* `request_body_id` : UUID qui identifie le corps de demande de cette tentative. L'[événement `api_response_body`](#api-response-body-event) pour la tentative qui réussit porte la même valeur, afin que vous puissiez associer une réponse à la demande exacte qui l'a produite. Nécessite Claude Code v2.1.274 ou ultérieur913* `request_body_id` : UUID qui identifie le corps de demande de cette tentative. L'[événement `api_response_body`](#api-response-body-event) pour la tentative qui réussit porte la même valeur, donc vous pouvez associer une réponse à la demande exacte qui l'a produite. Nécessite Claude Code v2.1.274 ou ultérieur

908 914 

909<h4 id="api-response-body-event">915<h4 id="api-response-body-event">

910 Événement de corps de réponse d'API916 Événement de corps de réponse API

911</h4>917</h4>

912 918 

913Enregistré pour chaque réponse d'API réussie lorsque `OTEL_LOG_RAW_API_BODIES` est défini.919Enregistré pour chaque réponse API réussie quand `OTEL_LOG_RAW_API_BODIES` est défini.

914 920 

915En mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`), Claude Code ajoute également une ligne JSON à `<dir>/index.jsonl` pour chaque réponse réussie, avec les champs `timestamp`, `session_id`, `query_source`, `model`, `request_id`, `message_id`, `message_uuid`, `request_file`, et `response_file`. Lisez-le pour trouver les fichiers de demande et de réponse derrière un message de transcription donné sans interroger votre backend de télémétrie. Le fichier d'index nécessite Claude Code v2.1.274 ou ultérieur.921En mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`), Claude Code ajoute également une ligne JSON à `<dir>/index.jsonl` pour chaque réponse réussie, avec les champs `timestamp`, `session_id`, `query_source`, `model`, `request_id`, `message_id`, `message_uuid`, `request_file`, et `response_file`. Lisez-le pour trouver les fichiers de demande et de réponse derrière un message de transcription donné sans interroger votre backend de télémétrie. Le fichier d'index nécessite Claude Code v2.1.274 ou ultérieur.

916 922 


920 926 

921* Tous les [attributs standard](#standard-attributes)927* Tous les [attributs standard](#standard-attributes)

922* `event.name` : `"api_response_body"`928* `event.name` : `"api_response_body"`

923* `event.timestamp` : Horodatage ISO 8601929* `event.timestamp` : Timestamp ISO 8601

924* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)930* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

925* `body` : Réponse de l'API Messages sérialisée en JSON, incluant l'id, les blocs de contenu, l'utilisation et la raison d'arrêt, tronquée à la limite de contenu (60 Ko par défaut). Le contenu de la réflexion étendue est masqué. Émis uniquement en mode en ligne (`OTEL_LOG_RAW_API_BODIES=1`).931* `body` : Réponse API Messages sérialisée en JSON, y compris l'id, les blocs de contenu, l'utilisation et la raison d'arrêt, tronquée à la limite de contenu (60 Ko par défaut). Le contenu de réflexion étendue est rédacté. Émis uniquement en mode en ligne (`OTEL_LOG_RAW_API_BODIES=1`).

926* `body_ref` : Chemin absolu vers un fichier `<dir>/<request_id>.response.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).932* `body_ref` : Chemin absolu vers un fichier `<dir>/<request_id>.response.json` contenant le corps non tronqué. Émis uniquement en mode fichier (`OTEL_LOG_RAW_API_BODIES=file:<dir>`).

927* `body_length` : Longueur du corps non tronqué. Octets UTF-8 lorsque `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unités de code UTF-16 lorsque `=1`933* `body_length` : Longueur du corps non tronqué. Octets UTF-8 quand `OTEL_LOG_RAW_API_BODIES=file:<dir>`, ou unités de code UTF-16 quand `=1`

928* `body_truncated` : `"true"` lorsque la troncature en ligne s'est produite. Absent en mode fichier et lorsqu'aucune troncature ne s'est produite.934* `body_truncated` : `"true"` quand la troncature en ligne s'est produite. Absent en mode fichier et quand aucune troncature ne s'est produite.

929* `model` : Identifiant du modèle935* `model` : Identifiant du modèle

930* `query_source` : Sous-système qui a émis la demande936* `query_source` : Sous-système qui a émis la demande

931* `request_id` : ID de demande d'API Anthropic de l'en-tête `request-id` de la réponse, tel que `"req_011..."`. Présent uniquement lorsque l'API en retourne un.937* `request_id` : ID de demande API Anthropic de l'en-tête `request-id` de la réponse, par exemple `"req_011..."`. Présent uniquement quand l'API en retourne un.

932* `request_body_id` : Le `request_body_id` de l'[événement `api_request_body`](#api-request-body-event) auquel cette réponse répond. Nécessite Claude Code v2.1.274 ou ultérieur938* `request_body_id` : Le `request_body_id` de l'[événement `api_request_body`](#api-request-body-event) auquel cette réponse répond. Nécessite Claude Code v2.1.274 ou ultérieur

933* `message.id` : ID de message que l'API a attribué à la réponse, le champ `id` du corps de réponse. Nécessite Claude Code v2.1.274 ou ultérieur939* `message.id` : ID de message que l'API a assigné à la réponse, le champ `id` du corps de réponse. Nécessite Claude Code v2.1.274 ou ultérieur

934* `message.uuid` : UUID de l'entrée de transcription finale de la réponse. Avec `request_body_id`, il lie un message de transcription aux corps de demande et de réponse derrière lui. Nécessite Claude Code v2.1.274 ou ultérieur940* `message.uuid` : UUID de l'entrée de transcription finale de la réponse. Avec `request_body_id`, il lie un message de transcription aux corps de demande et de réponse derrière lui. Nécessite Claude Code v2.1.274 ou ultérieur

935 941 

936<h4 id="tool-decision-event">942<h4 id="tool-decision-event">

937 Événement de décision d'outil943 Événement de décision d'outil

938</h4>944</h4>

939 945 

940Enregistré lorsqu'une décision de permission d'outil est prise (accepter/rejeter).946Enregistré quand une décision de permission d'outil est prise (accepter/rejeter).

941 947 

942**Nom de l'événement** : `claude_code.tool_decision`948**Nom de l'événement** : `claude_code.tool_decision`

943 949 


945 951 

946* Tous les [attributs standard](#standard-attributes)952* Tous les [attributs standard](#standard-attributes)

947* `event.name` : `"tool_decision"`953* `event.name` : `"tool_decision"`

948* `event.timestamp` : Horodatage ISO 8601954* `event.timestamp` : Timestamp ISO 8601

949* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)955* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

950* `tool_name` : Nom de l'outil (par exemple, « Read », « Edit », « Write », « NotebookEdit »)956* `tool_name` : Nom de l'outil (par exemple, « Read », « Edit », « Write », « NotebookEdit »)

951* `tool_use_id` : Identifiant unique pour cette invocation d'outil. Correspond au `tool_use_id` passé aux hooks, permettant la corrélation entre les événements OTel et les données capturées par les hooks.957* `tool_use_id` : Identifiant unique pour cette invocation d'outil. Correspond au `tool_use_id` passé aux hooks, permettant la corrélation entre les événements OTel et les données capturées par les hooks.

952* `decision` : Soit `"accept"` soit `"reject"`958* `decision` : Soit `"accept"` soit `"reject"`

953* `tool_source` : Toujours présent. La provenance de l'outil, en tant qu'ensemble fermé de valeurs créées par la CLI. Nécessite Claude Code v2.1.214 ou ultérieur959* `tool_source` : Toujours présent. La provenance de l'outil, comme un ensemble fermé de valeurs créées par l'interface de ligne de commande. Nécessite Claude Code v2.1.214 ou ultérieur

954 * `"builtin"` : les outils propres de la CLI960 * `"builtin"` : les outils de l'interface de ligne de commande elle-même

955 * `"mcp"` : serveurs MCP en général961 * `"mcp"` : serveurs MCP en général

956 * `"sdk_host_builtin_mcp"` : un serveur en processus intégré à Claude Desktop lui-même, dans une session que Claude Desktop possède. Claude Desktop possède une session qu'il a démarrée à partir de l'un de ses propres points d'entrée, `claude-desktop`, `claude-desktop-3p`, ou `local-agent`, lorsque cette session n'est pas un enfant imbriqué ; les sessions imbriquées, y compris les sessions que Claude Code lui-même génère, rapportent ces serveurs comme `"mcp"`962 * `"sdk_host_builtin_mcp"` : un serveur en processus intégré à Claude Desktop lui-même, dans une session que Claude Desktop possède. Claude Desktop possède une session qu'il a démarrée à partir de l'un de ses propres points d'entrée, `claude-desktop`, `claude-desktop-3p`, ou `local-agent`, quand cette session n'est pas un enfant imbriqué ; les sessions imbriquées, y compris les sessions que Claude Code lui-même génère, signalent ces serveurs comme `"mcp"`

957* `source` : Source de la décision :963* `source` : D'où provient la décision :

958 * `"config"` : Décidé automatiquement sans invite, basé sur les paramètres du projet, les règles d'autorisation ou de refus dans les paramètres personnels de l'utilisateur, la politique gérée par l'entreprise, les drapeaux `--allowedTools` ou `--disallowedTools`, le mode de permission actif, une autorisation limitée à la session d'une invite antérieure dans la même session CLI interactive, ou parce que l'outil est intrinsèquement sûr. L'événement n'indique pas laquelle de ces sources a correspondu. Claude Code rapporte également `"config"` lorsque la demande d'invite de permission elle-même échoue, par exemple lorsque le callback [`canUseTool`](/docs/fr/agent-sdk/typescript#canusetool) du SDK Agent ou l'outil [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) retourne un résultat invalide, ou lorsque le flux d'entrée se ferme pendant que la demande est en attente. Avant v2.1.216, Claude Code rapportait ces défaillances comme `"user_reject"`.964 * `"config"` : Décidé automatiquement sans invite, basé sur les paramètres du projet, les règles d'autorisation ou de refus dans les paramètres personnels de l'utilisateur, la politique gérée par l'entreprise, les drapeaux `--allowedTools` ou `--disallowedTools`, le mode de permission actif, une subvention à portée de session d'une invite antérieure dans la même session CLI interactive, ou parce que l'outil est intrinsèquement sûr. L'événement n'indique pas laquelle de ces sources a correspondu. Claude Code signale également `"config"` quand la demande d'invite de permission elle-même échoue, par exemple quand le rappel [`canUseTool`](/docs/fr/agent-sdk/typescript#canusetool) du SDK Agent ou l'outil [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) retourne un résultat invalide, ou quand le flux d'entrée se ferme tandis que la demande est en attente. Avant v2.1.216, Claude Code signalait ces défaillances comme `"user_reject"`.

959 * `"hook"` : Un hook `PreToolUse` ou `PermissionRequest` a retourné la décision.965 * `"hook"` : Un hook `PreToolUse` ou `PermissionRequest` a retourné la décision.

960 * `"user_permanent"` : Émis lorsque l'utilisateur a choisi « Oui, et ne me demande plus pour ... » à une invite de permission, ce qui enregistre une règle d'autorisation dans ses paramètres personnels. Dans la CLI interactive, ceci est émis uniquement pour ce choix lui-même ; les appels ultérieurs qui correspondent à la règle enregistrée émettent `"config"` à la place. Dans le SDK Agent ou les sessions `-p` non-interactives, à la fois le choix initial et les correspondances de règles ultérieures émettent `"user_permanent"`. Traité comme une acceptation.966 * `"user_permanent"` : Émis quand l'utilisateur a choisi « Oui, et ne me demande plus pour ... » à une invite de permission, ce qui enregistre une règle d'autorisation dans ses paramètres personnels. Dans l'interface de ligne de commande interactive, ceci n'est émis que pour ce choix lui-même ; les appels ultérieurs qui correspondent à la règle enregistrée émettent `"config"` à la place. Dans les sessions SDK Agent ou non-interactive `-p`, à la fois le choix initial et les correspondances de règles ultérieures émettent `"user_permanent"`. Traité comme une acceptation.

961 * `"user_temporary"` : Émis lorsque l'utilisateur a choisi « Oui » à une invite de permission pour une approbation unique, ou a choisi une option qui accorde l'accès pour le reste de la session sur une invite d'édition ou de lecture de fichier. Dans la CLI interactive, ceci est émis uniquement pour le choix lui-même ; les appels ultérieurs autorisés par cette autorisation limitée à la session émettent `"config"` à la place. Dans le SDK Agent ou les sessions `-p` non-interactives, à la fois le choix et les correspondances ultérieures émettent `"user_temporary"`. Traité comme une acceptation.967 * `"user_temporary"` : Émis quand l'utilisateur a choisi « Oui » à une invite de permission pour une approbation unique, ou a choisi une option qui accorde l'accès pour le reste de la session sur une invite d'édition ou de lecture de fichier. Dans l'interface de ligne de commande interactive, ceci n'est émis que pour le choix lui-même ; les appels ultérieurs autorisés par cette subvention à portée de session émettent `"config"` à la place. Dans les sessions SDK Agent ou non-interactive `-p`, à la fois le choix et les correspondances ultérieures émettent `"user_temporary"`. Traité comme une acceptation.

962 * `"user_abort"` : Émis lorsque l'utilisateur a fermé l'invite de permission sans répondre. Dans le SDK Agent et les sessions `-p` non-interactives, cela inclut l'interruption du tour pendant qu'une demande de permission `canUseTool` ou `--permission-prompt-tool` est en attente ; avant v2.1.216, Claude Code rapportait cette interruption comme `"user_reject"`. Traité comme un rejet.968 * `"user_abort"` : Émis quand l'utilisateur a fermé l'invite de permission sans répondre. Dans les sessions SDK Agent et non-interactive `-p`, ceci inclut l'interruption du tour tandis qu'une demande de permission `canUseTool` ou `--permission-prompt-tool` est en attente ; avant v2.1.216, Claude Code signalait cette interruption comme `"user_reject"`. Traité comme un rejet.

963 * `"user_reject"` : Émis lorsque l'utilisateur a choisi « Non » lorsqu'il a été invité. Dans la CLI interactive, ceci est émis uniquement pour ce choix lui-même ; les appels qui correspondent à une règle de refus dans les paramètres personnels de l'utilisateur émettent `"config"` à la place. Dans le SDK Agent ou les sessions `-p` non-interactives, les appels qui correspondent à une règle de refus dans les paramètres personnels émettent `"user_reject"`. Traité comme un rejet.969 * `"user_reject"` : Émis quand l'utilisateur a choisi « Non » quand invité. Dans l'interface de ligne de commande interactive, ceci n'est émis que pour ce choix lui-même ; les appels qui correspondent à une règle de refus dans les paramètres personnels de l'utilisateur émettent `"config"` à la place. Dans les sessions SDK Agent ou non-interactive `-p`, les appels qui correspondent à une règle de refus dans les paramètres personnels émettent `"user_reject"`. Traité comme un rejet.

964* `tool_parameters` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Chaîne JSON contenant les paramètres spécifiques à l'outil. Même forme que l'[Événement de résultat d'outil](#tool-result-event), moins les champs post-exécution tels que `git_commit_id`. Les valeurs peuvent différer de `tool_result` pour un appel accepté si la décision de permission réécrit l'entrée d'outil via `updatedInput`. Utilisez cet attribut pour voir quelle commande a été rejetée lorsque `decision` est `"reject"`.970* `tool_parameters` (quand `OTEL_LOG_TOOL_DETAILS=1`) : Chaîne JSON contenant les paramètres spécifiques à l'outil. Même forme que l'[événement de résultat d'outil](#tool-result-event), moins les champs post-exécution tels que `git_commit_id`. Les valeurs peuvent différer de `tool_result` pour un appel accepté si la décision de permission réécrit l'entrée d'outil via `updatedInput`. Utilisez cet attribut pour voir quelle commande a été rejetée quand `decision` est `"reject"`.

965 * Pour les outils `"sdk_host_builtin_mcp"` : `mcp_server_name` et `mcp_tool_name` sont inclus même lorsque `OTEL_LOG_TOOL_DETAILS` est désactivé, car l'application hôte définit ces noms ; sans eux, un appel rejeté à l'un de ces serveurs intégrés serait non attribuable sur le flux par défaut. Pour les serveurs MCP configurés par l'utilisateur, le `tool_name` de l'événement est toujours le littéral `"mcp_tool"`, et les noms du serveur et de l'outil apparaissent uniquement dans `tool_parameters` avec le drapeau activé ; le contenu des arguments nécessite le drapeau partout. Nécessite Claude Code v2.1.214 ou ultérieur971 * Pour les outils `"sdk_host_builtin_mcp"` : `mcp_server_name` et `mcp_tool_name` sont inclus même quand `OTEL_LOG_TOOL_DETAILS` est désactivé, car l'application hôte définit ces noms ; sans eux, un appel rejeté à l'un de ces serveurs intégrés serait non attribuable sur le flux par défaut. Pour les serveurs MCP configurés par l'utilisateur, le `tool_name` de l'événement est toujours le littéral `"mcp_tool"`, et les noms du serveur et de l'outil n'apparaissent que dans `tool_parameters` avec le drapeau activé ; le contenu des arguments nécessite le drapeau partout. Nécessite Claude Code v2.1.214 ou ultérieur

966 * Pour l'outil Bash : inclut `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`. L'outil bash d'espace de travail de l'application de bureau rapporte également `tool_name` comme `Bash`, mais inclut uniquement `bash_command`, `full_command`, et `timeout`972 * Pour l'outil Bash : inclut `bash_command`, `full_command`, `timeout`, `description`, `dangerouslyDisableSandbox`. L'outil bash d'espace de travail de l'application de bureau signale également `tool_name` comme `Bash`, mais inclut uniquement `bash_command`, `full_command`, et `timeout`

967 * Pour les outils MCP : inclut `mcp_server_name`, `mcp_tool_name`973 * Pour les outils MCP : inclut `mcp_server_name`, `mcp_tool_name`

968 * Pour l'outil Skill : inclut `skill_name`974 * Pour l'outil Skill : inclut `skill_name`

969 * Pour l'outil Agent ou l'outil Task hérité : inclut `subagent_type`975 * Pour l'outil Agent ou l'outil Task hérité : inclut `subagent_type`


972 Événement de changement de mode de permission978 Événement de changement de mode de permission

973</h4>979</h4>

974 980 

975Enregistré lorsque le mode de permission change, par exemple à partir du cycle Shift+Tab, de la sortie du mode plan ou d'une vérification de porte en mode automatique.981Enregistré quand le mode de permission change, par exemple à partir du cycle Maj+Tab, de la sortie du mode plan, ou d'une vérification de porte en mode automatique.

976 982 

977**Nom de l'événement** : `claude_code.permission_mode_changed`983**Nom de l'événement** : `claude_code.permission_mode_changed`

978 984 


980 986 

981* Tous les [attributs standard](#standard-attributes)987* Tous les [attributs standard](#standard-attributes)

982* `event.name` : `"permission_mode_changed"`988* `event.name` : `"permission_mode_changed"`

983* `event.timestamp` : Horodatage ISO 8601989* `event.timestamp` : Timestamp ISO 8601

984* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)990* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

985* `from_mode` : Le mode de permission précédent, par exemple `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, ou `"bypassPermissions"`991* `from_mode` : Le mode de permission précédent, par exemple `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, ou `"bypassPermissions"`

986* `to_mode` : Le nouveau mode de permission992* `to_mode` : Le nouveau mode de permission

987* `trigger` : Ce qui a causé le changement. L'un de `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, ou `"auto_opt_in"`. Absent lorsque la transition provient du SDK ou du pont993* `trigger` : Ce qui a causé le changement. L'une de `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"`, ou `"auto_opt_in"`. Absent quand la transition provient du SDK ou du pont

988 994 

989<h4 id="auth-event">995<h4 id="auth-event">

990 Événement d'authentification996 Événement d'authentification

991</h4>997</h4>

992 998 

993Enregistré lorsque `/login` ou `/logout` se termine.999Enregistré quand `/login` ou `/logout` se termine.

994 1000 

995**Nom de l'événement** : `claude_code.auth`1001**Nom de l'événement** : `claude_code.auth`

996 1002 


998 1004 

999* Tous les [attributs standard](#standard-attributes)1005* Tous les [attributs standard](#standard-attributes)

1000* `event.name` : `"auth"`1006* `event.name` : `"auth"`

1001* `event.timestamp` : Horodatage ISO 86011007* `event.timestamp` : Timestamp ISO 8601

1002* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1008* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1003* `action` : `"login"` ou `"logout"`1009* `action` : `"login"` ou `"logout"`

1004* `success` : `"true"` ou `"false"`1010* `success` : `"true"` ou `"false"`

1005* `auth_method` : Méthode d'authentification, telle que `"oauth"`1011* `auth_method` : Méthode d'authentification, par exemple `"oauth"`

1006* `error_category` : Type d'erreur catégorique lorsque l'action a échoué. Le message d'erreur brut n'est jamais inclus1012* `error_category` : Type d'erreur catégorique quand l'action a échoué. Le message d'erreur brut n'est jamais inclus

1007* `status_code` : Code de statut HTTP sous forme de chaîne lorsque l'action a échoué avec une erreur HTTP1013* `status_code` : Code de statut HTTP en tant que chaîne quand l'action a échoué avec une erreur HTTP

1008 1014 

1009<h4 id="mcp-server-connection-event">1015<h4 id="mcp-server-connection-event">

1010 Événement de connexion du serveur MCP1016 Événement de connexion du serveur MCP

1011</h4>1017</h4>

1012 1018 

1013Enregistré lorsqu'un serveur MCP se connecte, se déconnecte ou échoue à se connecter.1019Enregistré quand un serveur MCP se connecte, se déconnecte, ou échoue à se connecter.

1014 1020 

1015**Nom de l'événement** : `claude_code.mcp_server_connection`1021**Nom de l'événement** : `claude_code.mcp_server_connection`

1016 1022 


1018 1024 

1019* Tous les [attributs standard](#standard-attributes)1025* Tous les [attributs standard](#standard-attributes)

1020* `event.name` : `"mcp_server_connection"`1026* `event.name` : `"mcp_server_connection"`

1021* `event.timestamp` : Horodatage ISO 86011027* `event.timestamp` : Timestamp ISO 8601

1022* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1028* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1023* `status` : `"connected"`, `"failed"`, ou `"disconnected"`1029* `status` : `"connected"`, `"failed"`, ou `"disconnected"`

1024* `transport_type` : Transport du serveur, tel que `"stdio"`, `"sse"`, ou `"http"`1030* `transport_type` : Transport du serveur, par exemple `"stdio"`, `"sse"`, ou `"http"`

1025* `server_scope` : Portée à laquelle le serveur est configuré, telle que `"user"`, `"project"`, ou `"local"`1031* `server_scope` : Portée à laquelle le serveur est configuré, par exemple `"user"`, `"project"`, ou `"local"`

1026* `duration_ms` : Durée de la tentative de connexion en millisecondes1032* `duration_ms` : Durée de la tentative de connexion en millisecondes

1027* `error_code` : Code d'erreur lorsque la connexion a échoué1033* `error_code` : Code d'erreur quand la connexion a échoué

1028* `is_plugin` : `true` lorsque le serveur est fourni par un plugin, `false` sinon1034* `is_plugin` : `true` quand le serveur est fourni par un plugin, `false` sinon

1029* `plugin_id_hash` (lorsque `is_plugin` est `true`) : Hash stable du nom du plugin et de la place de marché, pour regrouper les événements par plugin sans exposer le nom. Claude Code le calcule comme décrit sous l'[événement de plugin chargé](#plugin-loaded-event)1035* `plugin_id_hash` (quand `is_plugin` est `true`) : Hash stable du nom du plugin et de la place de marché, pour regrouper les événements par plugin sans exposer le nom. Claude Code le calcule comme décrit sous l'[événement de plugin chargé](#plugin-loaded-event)

1030* `plugin.name` (lorsque `is_plugin` est `true`) : Nom du plugin qui fournit le serveur. Pour les plugins tiers, ceci est la chaîne littérale `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1` ; cela protège les noms de plugins tiers d'apparaître dans les journaux par défaut. Les plugins provenant de sources officielles d'Anthropic sont toujours identifiés par nom. Les attributs `plugin_id_hash` et `plugin.name` circulent vers votre propre backend de surveillance et ne sont pas envoyés à Anthropic1036* `plugin.name` (quand `is_plugin` est `true`) : Nom du plugin qui fournit le serveur. Pour les plugins tiers, c'est la chaîne littérale `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1` ; ceci protège les noms de plugins tiers d'apparaître dans les journaux par défaut. Les plugins de sources Anthropic officielles sont toujours identifiés par nom. Les attributs `plugin_id_hash` et `plugin.name` circulent vers votre propre backend de surveillance et ne sont pas envoyés à Anthropic

1031* `server_name` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Nom du serveur configuré1037* `server_name` (quand `OTEL_LOG_TOOL_DETAILS=1`) : Nom du serveur configuré

1032* `error` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : Message d'erreur complet lorsque la connexion a échoué1038* `error` (quand `OTEL_LOG_TOOL_DETAILS=1`) : Message d'erreur complet quand la connexion a échoué

1033 1039 

1034<h4 id="internal-error-event">1040<h4 id="internal-error-event">

1035 Événement d'erreur interne1041 Événement d'erreur interne

1036</h4>1042</h4>

1037 1043 

1038Enregistré lorsque Claude Code détecte une erreur interne inattendue. Seul le nom de la classe d'erreur et un code de style errno sont enregistrés. Le message d'erreur et la trace de pile ne sont jamais inclus. Cet événement n'est pas émis lors de l'exécution sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry, ou lorsque `DISABLE_ERROR_REPORTING` est défini.1044Enregistré quand Claude Code capture une erreur interne inattendue. Seul le nom de la classe d'erreur et un code de style errno sont enregistrés. Le message d'erreur et la trace de pile ne sont jamais inclus. Cet événement n'est pas émis lors de l'exécution contre Amazon Bedrock, la plateforme d'agents de Google Cloud, ou Microsoft Foundry, ou quand `DISABLE_ERROR_REPORTING` est défini.

1039 1045 

1040**Nom de l'événement** : `claude_code.internal_error`1046**Nom de l'événement** : `claude_code.internal_error`

1041 1047 


1043 1049 

1044* Tous les [attributs standard](#standard-attributes)1050* Tous les [attributs standard](#standard-attributes)

1045* `event.name` : `"internal_error"`1051* `event.name` : `"internal_error"`

1046* `event.timestamp` : Horodatage ISO 86011052* `event.timestamp` : Timestamp ISO 8601

1047* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1053* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1048* `error_name` : Nom de la classe d'erreur, tel que `"TypeError"` ou `"SyntaxError"`1054* `error_name` : Nom de la classe d'erreur, par exemple `"TypeError"` ou `"SyntaxError"`

1049* `error_code` : Code errno Node.js tel que `"ENOENT"` lorsqu'il est présent sur l'erreur1055* `error_code` : Code errno Node.js tel que `"ENOENT"` quand présent sur l'erreur

1050 1056 

1051<h4 id="plugin-installed-event">1057<h4 id="plugin-installed-event">

1052 Événement de plugin installé1058 Événement de plugin installé

1053</h4>1059</h4>

1054 1060 

1055Enregistré lorsqu'un plugin termine l'installation, à partir de la commande CLI `claude plugin install` et de l'interface utilisateur interactive `/plugin`.1061Enregistré quand un plugin termine son installation, à partir à la fois de la commande CLI `claude plugin install` et de l'interface utilisateur interactive `/plugin`.

1056 1062 

1057**Nom de l'événement** : `claude_code.plugin_installed`1063**Nom de l'événement** : `claude_code.plugin_installed`

1058 1064 


1060 1066 

1061* Tous les [attributs standard](#standard-attributes)1067* Tous les [attributs standard](#standard-attributes)

1062* `event.name` : `"plugin_installed"`1068* `event.name` : `"plugin_installed"`

1063* `event.timestamp` : Horodatage ISO 86011069* `event.timestamp` : Timestamp ISO 8601

1064* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1070* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1065* `marketplace.is_official` : `"true"` si la place de marché est une place de marché officielle d'Anthropic, `"false"` sinon1071* `marketplace.is_official` : `"true"` si la place de marché est une place de marché officielle Anthropic, `"false"` sinon

1066* `install.trigger` : `"cli"` ou `"ui"`1072* `install.trigger` : `"cli"` ou `"ui"`

1067* `plugin.name` : Nom du plugin installé. Pour les places de marché tierces, ceci est inclus uniquement lorsque `OTEL_LOG_TOOL_DETAILS=1`1073* `plugin.name` : Nom du plugin installé. Pour les places de marché tiers, ceci n'est inclus que quand `OTEL_LOG_TOOL_DETAILS=1`

1068* `plugin.version` : Version du plugin lorsqu'elle est déclarée dans l'entrée de la place de marché. Pour les places de marché tierces, ceci est inclus uniquement lorsque `OTEL_LOG_TOOL_DETAILS=1`1074* `plugin.version` : Version du plugin quand déclarée dans l'entrée de la place de marché. Pour les places de marché tiers, ceci n'est inclus que quand `OTEL_LOG_TOOL_DETAILS=1`

1069* `marketplace.name` : Place de marché à partir de laquelle le plugin a été installé. Pour les places de marché tierces, ceci est inclus uniquement lorsque `OTEL_LOG_TOOL_DETAILS=1`1075* `marketplace.name` : Place de marché à partir de laquelle le plugin a été installé. Pour les places de marché tiers, ceci n'est inclus que quand `OTEL_LOG_TOOL_DETAILS=1`

1070 1076 

1071<h4 id="plugin-loaded-event">1077<h4 id="plugin-loaded-event">

1072 Événement de plugin chargé1078 Événement de plugin chargé

1073</h4>1079</h4>

1074 1080 

1075Enregistré une fois par plugin activé au démarrage de la session. Utilisez cet événement pour inventorier les plugins actifs dans votre flotte, en complément de `plugin_installed` qui enregistre l'action d'installation elle-même.1081Enregistré une fois par plugin activé au démarrage de la session. Utilisez cet événement pour inventorier quels plugins sont actifs dans votre flotte, en complément de `plugin_installed` qui enregistre l'action d'installation elle-même.

1076 1082 

1077**Nom de l'événement** : `claude_code.plugin_loaded`1083**Nom de l'événement** : `claude_code.plugin_loaded`

1078 1084 


1080 1086 

1081* Tous les [attributs standard](#standard-attributes)1087* Tous les [attributs standard](#standard-attributes)

1082* `event.name` : `"plugin_loaded"`1088* `event.name` : `"plugin_loaded"`

1083* `event.timestamp` : Horodatage ISO 86011089* `event.timestamp` : Timestamp ISO 8601

1084* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1090* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1085* `plugin.name` : nom du plugin. Pour les plugins en dehors de la place de marché officielle et du bundle intégré, la valeur est `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1`1091* `plugin.name` : nom du plugin. Pour les plugins en dehors de la place de marché officielle et du bundle intégré, la valeur est `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1`

1086* `marketplace.name` : place de marché à partir de laquelle le plugin a été installé, lorsqu'elle est connue. Masquée à `"third-party"` sous la même condition que `plugin.name`1092* `marketplace.name` : place de marché à partir de laquelle le plugin a été installé, quand connue. Rédacté à `"third-party"` sous la même condition que `plugin.name`

1087* `plugin.version` : version du manifeste du plugin. Inclus uniquement lorsque le nom n'est pas masqué et que le manifeste déclare une version1093* `plugin.version` : version du manifeste du plugin. Inclus uniquement quand le nom n'est pas rédacté et que le manifeste déclare une version

1088* `plugin.scope` : catégorie de provenance du plugin : `"official"`, `"community"`, `"org"`, `"user-local"`, ou `"default-bundle"`1094* `plugin.scope` : catégorie de provenance pour le plugin : `"official"`, `"community"`, `"org"`, `"user-local"`, ou `"default-bundle"`

1089* `enabled_via` : comment le plugin en est venu à être activé : `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, ou `"user-install"`. La valeur `"admin-install"` signifie que le plugin est défini comme obligatoire ou auto-installation pour votre organisation dans [**Paramètres de l'organisation > Plugins**](https://claude.ai/admin-settings/plugins). Avant v2.1.246, Claude Code rapportait ces plugins comme `"user-install"` ou `"seed-mount"`1095* `enabled_via` : comment le plugin en est venu à être activé : `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, ou `"user-install"`. La valeur `"admin-install"` signifie que le plugin est défini comme obligatoire ou auto-installation pour votre organisation dans [**Paramètres de l'organisation > Plugins et compétences**](https://claude.ai/admin-settings/skills?tab=inventory). Avant v2.1.246, Claude Code signalait ces plugins comme `"user-install"` ou `"seed-mount"`

1090* `plugin_id_hash` : hash déterministe du nom du plugin et de la place de marché, envoyé uniquement à votre exportateur configuré. Vous permet de compter les plugins tiers distincts chargés dans votre flotte sans enregistrer leurs noms. Pour les [plugins synchronisés à partir de claude.ai](/docs/fr/plugins-reference#synced-plugins), Claude Code hache le nom du plugin avec le nom de la place de marché que claude.ai rapporte pour le plugin, ou avec `synced` sinon. Avant v2.1.246, Claude Code n'utilisait pas le nom de la place de marché que claude.ai rapporte dans le hash1096* `plugin_id_hash` : hash déterministe du nom du plugin et de la place de marché, envoyé uniquement à votre exportateur configuré. Vous permet de compter les plugins tiers distincts chargés dans votre flotte sans enregistrer leurs noms. Pour les [plugins synchronisés à partir de claude.ai](/docs/fr/plugins/loading#synced-plugins), Claude Code hache le nom du plugin avec le nom de la place de marché que claude.ai signale pour le plugin, ou avec `synced` sinon. Avant v2.1.246, Claude Code n'utilisait pas le nom de la place de marché que claude.ai signale dans le hash

1091* `has_hooks` : si le plugin contribue des hooks1097* `has_hooks` : si le plugin contribue des hooks

1092* `has_mcp` : si le plugin contribue des serveurs MCP1098* `has_mcp` : si le plugin contribue des serveurs MCP

1093* `host_owned_mcp` : `true` lorsque l'hôte SDK gère les connexions MCP de ce plugin et Claude Code a ignoré la lecture de la configuration du serveur MCP du plugin, `false` sinon. Nécessite Claude Code v2.1.172 ou ultérieur1099* `host_owned_mcp` : `true` quand l'hôte SDK gère les connexions MCP de ce plugin et Claude Code a ignoré la lecture de la configuration du serveur MCP du plugin, `false` sinon. Nécessite Claude Code v2.1.172 ou ultérieur

1094* `skill_path_count` : nombre de répertoires de compétences que le plugin déclare1100* `skill_path_count` : nombre de répertoires de compétences que le plugin déclare

1095* `command_path_count` : nombre de répertoires de commandes que le plugin déclare1101* `command_path_count` : nombre de répertoires de commandes que le plugin déclare

1096* `agent_path_count` : nombre de répertoires d'agents que le plugin déclare1102* `agent_path_count` : nombre de répertoires d'agents que le plugin déclare

1097* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. En mode sûr, cet événement rapporte l'inventaire configuré uniquement ; les commandes, compétences, hooks et serveurs MCP du plugin ne se chargent pas. Nécessite Claude Code v2.1.169 ou ultérieur1103* `safe_mode` : `"true"` quand la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. En mode sûr, cet événement signale uniquement l'inventaire configuré ; les commandes, compétences, hooks et serveurs MCP du plugin ne se chargent pas. Nécessite Claude Code v2.1.169 ou ultérieur

1098 1104 

1099<h4 id="skill-activated-event">1105<h4 id="skill-activated-event">

1100 Événement de compétence activée1106 Événement de compétence activée

1101</h4>1107</h4>

1102 1108 

1103Enregistré lorsqu'une compétence est invoquée, que Claude l'appelle via l'outil Skill ou que vous l'exécutiez en tant que commande `/`.1109Enregistré quand une compétence est invoquée, que Claude l'appelle via l'outil Skill ou que vous l'exécutiez en tant que commande `/`.

1104 1110 

1105**Nom de l'événement** : `claude_code.skill_activated`1111**Nom de l'événement** : `claude_code.skill_activated`

1106 1112 


1108 1114 

1109* Tous les [attributs standard](#standard-attributes)1115* Tous les [attributs standard](#standard-attributes)

1110* `event.name` : `"skill_activated"`1116* `event.name` : `"skill_activated"`

1111* `event.timestamp` : Horodatage ISO 86011117* `event.timestamp` : Timestamp ISO 8601

1112* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1118* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1113* `skill.name` : Nom de la compétence. Pour les compétences définies par l'utilisateur et les compétences de plugin tiers, la valeur est l'espace réservé `"custom_skill"` sauf si `OTEL_LOG_TOOL_DETAILS=1`1119* `skill.name` : Nom de la compétence. Pour les compétences définies par l'utilisateur et les plugins tiers, la valeur est l'espace réservé `"custom_skill"` sauf si `OTEL_LOG_TOOL_DETAILS=1`

1114* `invocation_trigger` : Comment la compétence a été déclenchée (`"user-slash"`, `"claude-proactive"`, ou `"nested-skill"`)1120* `invocation_trigger` : Comment la compétence a été déclenchée (`"user-slash"`, `"claude-proactive"`, ou `"nested-skill"`)

1115* `skill.source` : D'où la compétence a été chargée (par exemple, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)1121* `skill.source` : D'où la compétence a été chargée (par exemple, `"bundled"`, `"userSettings"`, `"projectSettings"`, `"plugin"`)

1116* `skill.kind` : `"workflow"` lorsque la compétence est une compétence de flux de travail. Absent sinon1122* `skill.kind` : `"workflow"` quand la compétence est une compétence de flux de travail. Absent sinon

1117* `plugin.name` (lorsque `OTEL_LOG_TOOL_DETAILS=1` ou le plugin provient d'une place de marché officielle) : Nom du plugin propriétaire lorsque la compétence est fournie par un plugin1123* `plugin.name` (quand `OTEL_LOG_TOOL_DETAILS=1` ou le plugin provient d'une place de marché officielle) : Nom du plugin propriétaire quand la compétence est fournie par un plugin

1118* `marketplace.name` (lorsque `OTEL_LOG_TOOL_DETAILS=1` ou le plugin provient d'une place de marché officielle) : Place de marché du plugin propriétaire, lorsque la compétence est fournie par un plugin1124* `marketplace.name` (quand `OTEL_LOG_TOOL_DETAILS=1` ou le plugin provient d'une place de marché officielle) : Place de marché à partir de laquelle le plugin propriétaire a été installé, quand la compétence est fournie par un plugin

1119 1125 

1120<h4 id="at-mention-event">1126<h4 id="at-mention-event">

1121 Événement de mention @1127 Événement de mention @

1122</h4>1128</h4>

1123 1129 

1124Enregistré lorsque Claude Code résout une mention `@` dans une invite. Pas chaque mention n'émet un événement : les chemins de sortie anticipée tels que les refus de permission, les fichiers surdimensionnés, les pièces jointes de référence PDF et les défaillances de listage de répertoires retournent sans enregistrement.1130Enregistré quand Claude Code résout une mention `@` dans une invite. Pas chaque mention n'émet un événement : les chemins de sortie anticipée tels que les refus de permission, les fichiers surdimensionnés, les pièces jointes de référence PDF et les défaillances de listage de répertoires retournent sans journalisation.

1125 1131 

1126**Nom de l'événement** : `claude_code.at_mention`1132**Nom de l'événement** : `claude_code.at_mention`

1127 1133 


1129 1135 

1130* Tous les [attributs standard](#standard-attributes)1136* Tous les [attributs standard](#standard-attributes)

1131* `event.name` : `"at_mention"`1137* `event.name` : `"at_mention"`

1132* `event.timestamp` : Horodatage ISO 86011138* `event.timestamp` : Timestamp ISO 8601

1133* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1139* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1134* `mention_type` : Type de mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). La valeur `"peer"` signifie que vous avez mentionné [l'une de vos autres sessions Claude Code](/docs/fr/cross-session-messaging). Nécessite Claude Code v2.1.232 ou ultérieur1140* `mention_type` : Type de mention (`"file"`, `"directory"`, `"agent"`, `"mcp_resource"`, `"peer"`). La valeur `"peer"` signifie que vous avez mentionné [l'une de vos autres sessions Claude Code](/docs/fr/cross-session-messaging). Nécessite Claude Code v2.1.232 ou ultérieur

1135* `success` : Si la mention a été résolue avec succès (`"true"` ou `"false"`)1141* `success` : Si la mention a été résolue avec succès (`"true"` ou `"false"`)

1136 1142 

1137<h4 id="api-retries-exhausted-event">1143<h4 id="api-retries-exhausted-event">

1138 Événement de tentatives d'API épuisées1144 Événement de nouvelles tentatives API épuisées

1139</h4>1145</h4>

1140 1146 

1141Enregistré une fois lorsqu'une demande d'API échoue après plus d'une tentative. Émis aux côtés de l'événement `api_error` final.1147Enregistré une fois quand une demande API échoue après plus d'une tentative. Émis aux côtés de l'événement `api_error` final.

1142 1148 

1143**Nom de l'événement** : `claude_code.api_retries_exhausted`1149**Nom de l'événement** : `claude_code.api_retries_exhausted`

1144 1150 


1146 1152 

1147* Tous les [attributs standard](#standard-attributes)1153* Tous les [attributs standard](#standard-attributes)

1148* `event.name` : `"api_retries_exhausted"`1154* `event.name` : `"api_retries_exhausted"`

1149* `event.timestamp` : Horodatage ISO 86011155* `event.timestamp` : Timestamp ISO 8601

1150* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1156* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1151* `model` : Modèle utilisé1157* `model` : Modèle utilisé

1152* `error` : Message d'erreur final1158* `error` : Message d'erreur final

1153* `status_code` : Code de statut HTTP sous forme de nombre. Absent pour les erreurs non-HTTP.1159* `status_code` : Code de statut HTTP en tant que nombre. Absent pour les erreurs non-HTTP.

1154* `total_attempts` : Nombre total de tentatives effectuées1160* `total_attempts` : Nombre total de tentatives effectuées

1155* `total_retry_duration_ms` : Temps mural total sur toutes les tentatives1161* `total_retry_duration_ms` : Temps mural total à travers toutes les tentatives

1156* `speed` : `"fast"` ou `"normal"`1162* `speed` : `"fast"` ou `"normal"`

1157 1163 

1158<h4 id="hook-registered-event">1164<h4 id="hook-registered-event">

1159 Événement de hook enregistré1165 Événement de hook enregistré

1160</h4>1166</h4>

1161 1167 

1162Enregistré une fois par hook configuré au démarrage de la session. Utilisez cet événement pour inventorier les hooks actifs dans votre flotte, en complément des événements `hook_execution_start` et `hook_execution_complete` par exécution.1168Enregistré une fois par hook configuré au démarrage de la session. Utilisez cet événement pour inventorier quels hooks sont actifs dans votre flotte, en complément des événements par exécution `hook_execution_start` et `hook_execution_complete`.

1163 1169 

1164**Nom de l'événement** : `claude_code.hook_registered`1170**Nom de l'événement** : `claude_code.hook_registered`

1165 1171 


1167 1173 

1168* Tous les [attributs standard](#standard-attributes)1174* Tous les [attributs standard](#standard-attributes)

1169* `event.name` : `"hook_registered"`1175* `event.name` : `"hook_registered"`

1170* `event.timestamp` : Horodatage ISO 86011176* `event.timestamp` : Timestamp ISO 8601

1171* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1177* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1172* `hook_event` : type d'événement hook, tel que `"PreToolUse"` ou `"PostToolUse"`1178* `hook_event` : type d'événement hook, par exemple `"PreToolUse"` ou `"PostToolUse"`

1173* `hook_type` : type d'implémentation du hook : `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, ou `"agent"`1179* `hook_type` : type d'implémentation du hook : `"command"`, `"prompt"`, `"mcp_tool"`, `"http"`, ou `"agent"`

1174* `hook_source` : où le hook est défini : `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, ou `"pluginHook"`1180* `hook_source` : où le hook est défini : `"userSettings"`, `"projectSettings"`, `"localSettings"`, `"flagSettings"`, `"policySettings"`, ou `"pluginHook"`

1175* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur1181* `safe_mode` : `"true"` quand la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur

1176* `hook_matcher` (lorsque `OTEL_LOG_TOOL_DETAILS=1`) : la chaîne matcher de la configuration du hook, lorsqu'elle est définie1182* `hook_matcher` (quand `OTEL_LOG_TOOL_DETAILS=1`) : la chaîne de correspondance de la configuration du hook, quand une est définie

1177* `plugin.name` (lorsque `hook_source` est `"pluginHook"`) : nom du plugin contributeur. Pour les plugins en dehors de la place de marché officielle et du bundle intégré, la valeur est `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1`1183* `plugin.name` (quand `hook_source` est `"pluginHook"`) : nom du plugin contributeur. Pour les plugins en dehors de la place de marché officielle et du bundle intégré, la valeur est `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1`

1178* `plugin_id_hash` (lorsque `hook_source` est `"pluginHook"`) : hash déterministe du nom du plugin et de la place de marché, envoyé uniquement à votre exportateur configuré. Vous permet de compter les plugins contributeurs distincts sans enregistrer leurs noms. Claude Code le calcule comme décrit sous l'[événement de plugin chargé](#plugin-loaded-event)1184* `plugin_id_hash` (quand `hook_source` est `"pluginHook"`) : hash déterministe du nom du plugin et de la place de marché, envoyé uniquement à votre exportateur configuré. Vous permet de compter les plugins contributeurs distincts sans enregistrer leurs noms. Claude Code le calcule comme décrit sous l'[événement de plugin chargé](#plugin-loaded-event)

1179 1185 

1180<h4 id="hook-execution-start-event">1186<h4 id="hook-execution-start-event">

1181 Événement de démarrage d'exécution de hook1187 Événement de début d'exécution de hook

1182</h4>1188</h4>

1183 1189 

1184Enregistré lorsqu'un ou plusieurs hooks commencent à s'exécuter pour un événement de hook.1190Enregistré quand un ou plusieurs hooks commencent à s'exécuter pour un événement hook.

1185 1191 

1186**Nom de l'événement** : `claude_code.hook_execution_start`1192**Nom de l'événement** : `claude_code.hook_execution_start`

1187 1193 


1189 1195 

1190* Tous les [attributs standard](#standard-attributes)1196* Tous les [attributs standard](#standard-attributes)

1191* `event.name` : `"hook_execution_start"`1197* `event.name` : `"hook_execution_start"`

1192* `event.timestamp` : Horodatage ISO 86011198* `event.timestamp` : Timestamp ISO 8601

1193* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1199* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1194* `hook_event` : Type d'événement hook, tel que `"PreToolUse"` ou `"PostToolUse"`1200* `hook_event` : Type d'événement hook, par exemple `"PreToolUse"` ou `"PostToolUse"`

1195* `hook_name` : Nom complet du hook incluant le matcher, tel que `"PreToolUse:Write"`1201* `hook_name` : Nom complet du hook incluant la correspondance, par exemple `"PreToolUse:Write"`

1196* `num_hooks` : Nombre de commandes hook correspondantes1202* `num_hooks` : Nombre de commandes hook correspondantes

1197* `managed_only` : `"true"` lorsque seuls les hooks de politique gérée sont autorisés1203* `managed_only` : `"true"` quand seuls les hooks de politique gérée sont autorisés

1198* `hook_source` : `"policySettings"` ou `"merged"`1204* `hook_source` : `"policySettings"` ou `"merged"`

1199* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur1205* `safe_mode` : `"true"` quand la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur

1200* `hook_definitions` : Configuration du hook sérialisée en JSON. Inclus uniquement lorsque le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés1206* `hook_definitions` : Configuration du hook sérialisée en JSON. Inclus uniquement quand le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés

1201 1207 

1202<h4 id="hook-execution-complete-event">1208<h4 id="hook-execution-complete-event">

1203 Événement de fin d'exécution de hook1209 Événement de fin d'exécution de hook

1204</h4>1210</h4>

1205 1211 

1206Enregistré lorsque tous les hooks pour un événement de hook ont terminé.1212Enregistré quand tous les hooks pour un événement hook ont terminé.

1207 1213 

1208**Nom de l'événement** : `claude_code.hook_execution_complete`1214**Nom de l'événement** : `claude_code.hook_execution_complete`

1209 1215 


1211 1217 

1212* Tous les [attributs standard](#standard-attributes)1218* Tous les [attributs standard](#standard-attributes)

1213* `event.name` : `"hook_execution_complete"`1219* `event.name` : `"hook_execution_complete"`

1214* `event.timestamp` : Horodatage ISO 86011220* `event.timestamp` : Timestamp ISO 8601

1215* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1221* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1216* `hook_event` : Type d'événement hook1222* `hook_event` : Type d'événement hook

1217* `hook_name` : Nom complet du hook incluant le matcher1223* `hook_name` : Nom complet du hook incluant la correspondance

1218* `num_hooks` : Nombre de commandes hook correspondantes1224* `num_hooks` : Nombre de commandes hook correspondantes

1219* `num_success` : Nombre qui se sont terminées avec succès1225* `num_success` : Nombre qui ont terminé avec succès

1220* `num_blocking` : Nombre qui ont retourné une décision de blocage1226* `num_blocking` : Nombre qui ont retourné une décision de blocage

1221* `num_non_blocking_error` : Nombre qui ont échoué sans bloquer1227* `num_non_blocking_error` : Nombre qui ont échoué sans bloquer

1222* `num_cancelled` : Nombre annulé avant la fin1228* `num_cancelled` : Nombre annulé avant la fin

1223* `total_duration_ms` : Durée murale de tous les hooks correspondants1229* `total_duration_ms` : Durée mural de tous les hooks correspondants

1224* `stdout_chars` : Nombre total de caractères de stdout sur les hooks correspondants qui ont réussi. Nécessite Claude Code v2.1.280 ou ultérieur1230* `stdout_chars` : Nombre total de caractères de stdout à travers les hooks correspondants qui ont réussi. Nécessite Claude Code v2.1.280 ou ultérieur

1225* `additional_context_chars` : Nombre total de caractères de `additionalContext` retournés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur1231* `additional_context_chars` : Nombre total de caractères de `additionalContext` retournés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur

1226* `system_message_chars` : Nombre total de caractères de `systemMessage` retournés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur1232* `system_message_chars` : Nombre total de caractères de `systemMessage` retournés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur

1227* `initial_user_message_chars` : Nombre total de caractères de `initialUserMessage` retournés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur1233* `initial_user_message_chars` : Nombre total de caractères de `initialUserMessage` retournés par les hooks correspondants. Nécessite Claude Code v2.1.280 ou ultérieur

1228* `num_outputs_persisted` : Nombre de sorties de hook au-delà de la [limite de 10 000 caractères](/docs/fr/hooks#json-output) que Claude Code a enregistrées dans un fichier. Nécessite Claude Code v2.1.280 ou ultérieur1234* `num_outputs_persisted` : Nombre de sorties de hook au-delà de la [limite de 10 000 caractères](/docs/fr/hooks#json-output) que Claude Code a enregistrées dans un fichier. Nécessite Claude Code v2.1.280 ou ultérieur

1229* `managed_only` : `"true"` lorsque seuls les hooks de politique gérée sont autorisés1235* `managed_only` : `"true"` quand seuls les hooks de politique gérée sont autorisés

1230* `hook_source` : `"policySettings"` ou `"merged"`1236* `hook_source` : `"policySettings"` ou `"merged"`

1231* `safe_mode` : `"true"` lorsque la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur1237* `safe_mode` : `"true"` quand la session a été démarrée avec [`--safe-mode`](/docs/fr/cli-reference), `"false"` sinon. Nécessite Claude Code v2.1.169 ou ultérieur

1232* `hook_definitions` : Configuration du hook sérialisée en JSON. Inclus uniquement lorsque le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés1238* `hook_definitions` : Configuration du hook sérialisée en JSON. Inclus uniquement quand le traçage bêta détaillé et `OTEL_LOG_TOOL_DETAILS=1` sont tous deux activés

1233 1239 

1234<h4 id="hook-plugin-metrics-event">1240<h4 id="hook-plugin-metrics-event">

1235 Événement de métriques de plugin hook1241 Événement de métriques de plugin de hook

1236</h4>1242</h4>

1237 1243 

1238Enregistré lorsqu'un hook de plugin de place de marché officielle émet des métriques par invocation. Seuls les plugins installés à partir d'une place de marché officielle d'Anthropic peuvent émettre ces métriques. Les plugins de place de marché tiers et les hooks configurés par l'utilisateur n'émettent pas vers cet événement. Utilisez cet événement pour surveiller le comportement des plugins tels que les taux de découverte, les coûts et les durées à partir de votre propre pile d'observabilité.1244Enregistré quand un hook de plugin de la place de marché officielle émet des métriques par invocation. Seuls les plugins installés à partir d'une place de marché Anthropic officielle peuvent émettre ceci. Les plugins de place de marché tiers et les hooks configurés par l'utilisateur n'émettent pas vers cet événement. Utilisez cet événement pour surveiller le comportement du plugin, par exemple les taux de découverte, les coûts et les durées à partir de votre propre pile d'observabilité.

1239 1245 

1240**Nom de l'événement** : `claude_code.hook_plugin_metrics`1246**Nom de l'événement** : `claude_code.hook_plugin_metrics`

1241 1247 


1243 1249 

1244* Tous les [attributs standard](#standard-attributes)1250* Tous les [attributs standard](#standard-attributes)

1245* `event.name` : `"hook_plugin_metrics"`1251* `event.name` : `"hook_plugin_metrics"`

1246* `event.timestamp` : Horodatage ISO 86011252* `event.timestamp` : Timestamp ISO 8601

1247* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1253* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1248* `plugin_id` : identifiant du plugin sous la forme `<name>@<marketplace>`1254* `plugin_id` : identifiant du plugin sous la forme `<name>@<marketplace>`

1249* `hook_event` : type d'événement hook qui a émis les métriques1255* `hook_event` : type d'événement hook qui a émis les métriques

1250* Jusqu'à 20 clés de métriques émises par le plugin. Les noms correspondent à `^[a-z][a-z0-9_]{0,39}$`. Les valeurs sont booléennes ou numériques.1256* Jusqu'à 20 clés de métriques émises par le plugin. Les noms correspondent à `^[a-z][a-z0-9_]{0,39}$`. Les valeurs sont booléennes ou numériques.


1253 Événement de compaction1259 Événement de compaction

1254</h4>1260</h4>

1255 1261 

1256Enregistré lorsque la compaction de conversation se termine.1262Enregistré quand la compaction de conversation se termine.

1257 1263 

1258**Nom de l'événement** : `claude_code.compaction`1264**Nom de l'événement** : `claude_code.compaction`

1259 1265 


1261 1267 

1262* Tous les [attributs standard](#standard-attributes)1268* Tous les [attributs standard](#standard-attributes)

1263* `event.name` : `"compaction"`1269* `event.name` : `"compaction"`

1264* `event.timestamp` : Horodatage ISO 86011270* `event.timestamp` : Timestamp ISO 8601

1265* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1271* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1266* `trigger` : `"auto"` ou `"manual"`1272* `trigger` : `"auto"` ou `"manual"`

1267* `success` : `"true"` ou `"false"`1273* `success` : `"true"` ou `"false"`

1268* `duration_ms` : Durée de la compaction1274* `duration_ms` : Durée de compaction

1269* `pre_tokens` : Nombre approximatif de jetons avant la compaction1275* `pre_tokens` : Nombre approximatif de jetons avant compaction

1270* `post_tokens` : Nombre approximatif de jetons après la compaction1276* `post_tokens` : Nombre approximatif de jetons après compaction

1271* `error` : Message d'erreur lorsque la compaction a échoué1277* `error` : Message d'erreur quand la compaction a échoué

1272* `precompute_reuse` : Défini uniquement lorsque `trigger` est `"manual"`. La compaction automatique peut préparer un résumé en arrière-plan avant que la fenêtre de contexte ne se remplisse, et cet attribut enregistre si `/compact` a réutilisé ce résumé préparé. `"hit"` signifie qu'il a été réutilisé ; `"miss_custom_instructions"`, `"miss_hook"`, et `"miss_not_ready"` donnent la raison pour laquelle un résumé frais a été calculé à la place. Nécessite Claude Code v2.1.153 ou ultérieur1278* `precompute_reuse` : Défini uniquement quand `trigger` est `"manual"`. La compaction automatique peut préparer un résumé en arrière-plan avant que la fenêtre de contexte se remplisse, et cet attribut enregistre si `/compact` a réutilisé ce résumé préparé. `"hit"` signifie qu'il a été réutilisé ; `"miss_custom_instructions"`, `"miss_hook"`, et `"miss_not_ready"` donnent la raison pour laquelle un résumé frais a été calculé à la place. Nécessite Claude Code v2.1.153 ou ultérieur

1273 1279 

1274<h4 id="subagent-completed-event">1280<h4 id="subagent-completed-event">

1275 Événement de sous-agent complété1281 Événement de sous-agent terminé

1276</h4>1282</h4>

1277 1283 

1278Enregistré lorsqu'un [sous-agent](/docs/fr/sub-agents) se termine et retourne son résultat à la conversation qui l'a démarré. Utilisez-le pour regrouper l'utilisation d'outils et le temps d'exécution par type de sous-agent ; pour les regroupements de jetons ou de coûts, utilisez le [compteur de jetons](#token-counter) et le [compteur de coûts](#cost-counter) filtrés sur `query_source` `"subagent"`, puisque le `total_tokens` de cet événement couvre uniquement la demande finale. La catégorie `"subagent"` compte également les demandes des hooks basés sur des agents, qui n'émettent aucun événement de sous-agent.1284Enregistré quand un [sous-agent](/docs/fr/sub-agents) se termine et retourne son résultat à la conversation qui l'a démarré. Utilisez-le pour cumuler l'utilisation d'outils et le temps d'exécution par type de sous-agent ; pour les cumuls de jetons ou de coûts, utilisez le [compteur de jetons](#token-counter) et le [compteur de coût](#cost-counter) filtrés sur `query_source` `"subagent"`, puisque le `total_tokens` de cet événement couvre uniquement la demande finale. La catégorie `"subagent"` compte également les demandes des hooks basés sur les agents, qui n'émettent aucun événement de sous-agent.

1279 1285 

1280**Nom de l'événement** : `claude_code.subagent_completed`1286**Nom de l'événement** : `claude_code.subagent_completed`

1281 1287 


1283 1289 

1284* Tous les [attributs standard](#standard-attributes)1290* Tous les [attributs standard](#standard-attributes)

1285* `event.name` : `"subagent_completed"`1291* `event.name` : `"subagent_completed"`

1286* `event.timestamp` : Horodatage ISO 86011292* `event.timestamp` : Timestamp ISO 8601

1287* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1293* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1288* `agent_type` : Le type de sous-agent. Les noms d'agents intégrés et les agents des plugins de place de marché officielle apparaissent textuellement ; les autres noms d'agents sont remplacés par `"custom"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini1294* `agent_type` : Le type de sous-agent. Les noms d'agents intégrés et les agents des plugins de la place de marché officielle apparaissent textuellement ; les autres noms d'agents sont remplacés par `"custom"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini

1289* `agent.source` : D'où la définition d'agent provient : `built-in`, `plugin`, ou la source de paramètres qui a défini un agent personnalisé, telle que `userSettings` ou `projectSettings`1295* `agent.source` : D'où provient la définition de l'agent : `built-in`, `plugin`, ou la source de paramètres qui a défini un agent personnalisé, par exemple `userSettings` ou `projectSettings`

1290* `is_built_in` : Si le sous-agent est un type d'agent intégré1296* `is_built_in` : Si le sous-agent est un type d'agent intégré

1291* `is_async` : Si le sous-agent s'est exécuté en [arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background)1297* `is_async` : Si le sous-agent s'est exécuté en [arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background)

1292* `total_tokens` : L'empreinte de jetons de la demande d'API finale du sous-agent : les jetons d'entrée, de création de cache, de lecture de cache et de sortie de cette seule demande, approximativement la taille du contexte du sous-agent à la fin. Pas une somme sur l'exécution1298* `total_tokens` : L'empreinte de jeton de la demande API finale du sous-agent : les jetons d'entrée, de création de cache, de lecture de cache et de sortie de cette seule demande, à peu près la taille du contexte du sous-agent à la fin. Pas une somme à travers l'exécution

1293* `total_tool_uses` : Nombre d'appels d'outils que le sous-agent a effectués sur toute l'exécution1299* `total_tool_uses` : Nombre d'appels d'outils que le sous-agent a effectués à travers toute l'exécution

1294* `duration_ms` : Temps d'exécution en millisecondes1300* `duration_ms` : Temps d'exécution en millisecondes

1295* `model` : Le modèle auquel le sous-agent a été résolu pour s'exécuter1301* `model` : Le modèle auquel le sous-agent a été résolu pour s'exécuter

1296* `final_model` : Le modèle qui a produit la réponse finale du sous-agent, qui diffère de `model` après un changement en cours d'exécution tel qu'un fallback. Nécessite Claude Code v2.1.212 ou ultérieur1302* `final_model` : Le modèle qui a produit la réponse finale du sous-agent, qui diffère de `model` après un changement en cours d'exécution tel qu'un secours. Nécessite Claude Code v2.1.212 ou ultérieur

1297* `model_swapped` : Si plus d'un modèle a servi les demandes du sous-agent. Nécessite Claude Code v2.1.212 ou ultérieur1303* `model_swapped` : Si plus d'un modèle a servi les demandes du sous-agent. Nécessite Claude Code v2.1.212 ou ultérieur

1298* `plugin_id_hash`, `plugin.name` : Présent pour les agents fournis par des plugins. Les noms de plugins de place de marché officielle apparaissent textuellement ; les autres noms de plugins sont remplacés par `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini1304* `plugin_id_hash`, `plugin.name` : Présent pour les agents fournis par les plugins. Les noms de plugins de la place de marché officielle apparaissent textuellement ; les autres noms de plugins sont remplacés par `"third-party"` sauf si `OTEL_LOG_TOOL_DETAILS=1` est défini

1299 1305 

1300<h4 id="feedback-survey-event">1306<h4 id="feedback-survey-event">

1301 Événement de sondage de rétroaction1307 Événement d'enquête de rétroaction

1302</h4>1308</h4>

1303 1309 

1304Enregistré lorsqu'un sondage de qualité de session est affiché ou auquel il est répondu. Voir [Sondages de qualité de session](/docs/fr/data-usage#session-quality-surveys) pour savoir ce que les sondages collectent et comment les contrôler.1310Enregistré quand une enquête de qualité de session est affichée ou répondue. Voir [Enquêtes de qualité de session](/docs/fr/data-usage#session-quality-surveys) pour ce que les enquêtes collectent et comment les contrôler.

1305 1311 

1306**Nom de l'événement** : `claude_code.feedback_survey`1312**Nom de l'événement** : `claude_code.feedback_survey`

1307 1313 


1309 1315 

1310* Tous les [attributs standard](#standard-attributes)1316* Tous les [attributs standard](#standard-attributes)

1311* `event.name` : `"feedback_survey"`1317* `event.name` : `"feedback_survey"`

1312* `event.timestamp` : Horodatage ISO 86011318* `event.timestamp` : Timestamp ISO 8601

1313* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1319* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1314* `event_type` : Événement du cycle de vie du sondage, par exemple `"appeared"`, `"responded"`, ou `"transcript_prompt_appeared"`1320* `event_type` : Événement du cycle de vie de l'enquête, par exemple `"appeared"`, `"responded"`, ou `"transcript_prompt_appeared"`

1315* `appearance_id` : ID unique liant les événements émis pour une instance de sondage1321* `appearance_id` : ID unique liant les événements émis pour une instance d'enquête

1316* `survey_type` : Quel sondage a produit l'événement. `"session"` est l'invite d'évaluation « Comment Claude se débrouille-t-il ? »1322* `survey_type` : Quelle enquête a produit l'événement. `"session"` est l'invite d'évaluation « Comment Claude se débrouille-t-il ? »

1317* `response` : La sélection de l'utilisateur sur les événements `responded`1323* `response` : La sélection de l'utilisateur sur les événements `responded`

1318* `enabled_via_override` : `true` lorsque [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/docs/fr/env-vars) est défini. Émis en tant que booléen, pas une chaîne. Présent sur les événements de sondage `session`. Filtrez sur cet attribut pour confirmer que le remplacement est appliqué dans votre flotte1324* `enabled_via_override` : `true` quand [`CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL`](/docs/fr/env-vars) est défini. Émis comme un booléen, pas une chaîne. Présent sur les événements d'enquête `session`. Filtrez sur cet attribut pour confirmer que le remplacement est appliqué dans une flotte

1319 1325 

1320<h4 id="retention-sweep-event">1326<h4 id="retention-sweep-event">

1321 Événement de balayage de rétention1327 Événement de balayage de rétention

1322</h4>1328</h4>

1323 1329 

1324Enregistré une fois par exécution du balayage de nettoyage de rétention, qui supprime les [transcriptions de session et autres données d'application](/docs/fr/claude-directory#cleaned-up-automatically) plus anciennes que le paramètre [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays). Claude Code exécute le balayage en arrière-plan au maximum une fois par session, et une exécution qui ne supprime rien émet toujours l'événement. Si Claude Code a exécuté le balayage dans n'importe quelle session sur la même machine au cours des 24 dernières heures, il retarde le balayage de cette session d'au moins 10 minutes, donc une session qui se termine plus tôt n'émet rien. Lorsque vous exécutez `claude -p` avec `--bare`, Claude Code n'exécute pas le balayage et n'émet rien.1330Enregistré une fois par exécution du balayage de nettoyage de rétention, qui supprime les [transcriptions de session et autres données d'application](/docs/fr/claude-directory#cleaned-up-automatically) plus anciennes que le paramètre [`cleanupPeriodDays`](/docs/fr/settings-reference#cleanupperioddays). Claude Code exécute le balayage en arrière-plan au maximum une fois par session, et une exécution qui ne supprime rien émet quand même l'événement. Si Claude Code a exécuté le balayage dans n'importe quelle session sur la même machine au cours des 24 dernières heures, il retarde le balayage de cette session d'au moins 10 minutes, donc une session qui se termine plus tôt n'émet rien. Quand vous exécutez `claude -p` avec `--bare`, Claude Code n'exécute pas le balayage et n'émet rien.

1325 1331 

1326Comme tous les événements OTel sur cette page, il va uniquement au backend de télémétrie que vous configurez. Nécessite Claude Code v2.1.227 ou ultérieur.1332Comme chaque événement OTel sur cette page, il va uniquement au backend de télémétrie que vous configurez. Nécessite Claude Code v2.1.227 ou ultérieur.

1327 1333 

1328Lorsque Claude Code ne peut pas déterminer en toute sécurité la période de rétention, il met en pause le balayage et émet l'événement avec `result` défini à `"skipped"` et une `skip_reason`. Lorsque les [paramètres gérés](/docs/fr/server-managed-settings) définissent `cleanupPeriodDays`, la valeur gérée épingle la période de rétention et le balayage s'exécute même lorsqu'un fichier de paramètres dans une portée de priorité inférieure est cassé ou invalide. Lorsque `managed-settings.json` lui-même ne peut pas être lu, Claude Code met toujours en pause le balayage sauf si le [niveau géré](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) fournit `cleanupPeriodDays` d'ailleurs, tels que les paramètres gérés par serveur ou un drop-in `managed-settings.d/` à côté du fichier cassé. Les attributs du compteur de suppression sont présents uniquement lorsque `result` est `"complete"`.1334Quand Claude Code ne peut pas déterminer avec certitude la période de rétention, il met en pause le balayage et émet l'événement avec `result` défini à `"skipped"` et une `skip_reason`. Quand les [paramètres gérés](/docs/fr/server-managed-settings) définissent `cleanupPeriodDays`, la valeur gérée épingle la période de rétention et le balayage s'exécute même quand un fichier de paramètres dans une portée de priorité inférieure est cassé ou invalide. Quand `managed-settings.json` lui-même ne peut pas être lu, Claude Code met quand même en pause le balayage sauf si le [niveau géré](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) fournit `cleanupPeriodDays` d'ailleurs, par exemple les paramètres gérés par le serveur ou une suppression `managed-settings.d/` à côté du fichier cassé. Les attributs du compteur de suppression sont présents uniquement quand `result` est `"complete"`.

1329 1335 

1330**Nom de l'événement** : `claude_code.retention_sweep`1336**Nom de l'événement** : `claude_code.retention_sweep`

1331 1337 


1333 1339 

1334* Tous les [attributs standard](#standard-attributes)1340* Tous les [attributs standard](#standard-attributes)

1335* `event.name` : `"retention_sweep"`1341* `event.name` : `"retention_sweep"`

1336* `event.timestamp` : Horodatage ISO 86011342* `event.timestamp` : Timestamp ISO 8601

1337* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1343* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1338* `result` : `"complete"` lorsque le balayage s'est exécuté, `"skipped"` lorsque Claude Code l'a mis en pause1344* `result` : `"complete"` quand le balayage s'est exécuté, `"skipped"` quand Claude Code l'a mis en pause

1339* `period_days` : La valeur `cleanupPeriodDays` des paramètres fusionnés, en jours, ou `30` lorsqu'aucune source ne la définit. Sur les événements ignorés, la valeur que le balayage aurait utilisée, calculée à partir des sources de paramètres que Claude Code a pu lire1345* `period_days` : La valeur `cleanupPeriodDays` des paramètres fusionnés, en jours, ou `30` quand aucune source ne la définit. Sur les événements ignorés, la valeur que le balayage aurait utilisée, calculée à partir des sources de paramètres que Claude Code a pu lire

1340* `used_default` : `"true"` lorsqu'aucune source de paramètres lisible ne définit `cleanupPeriodDays`, `"false"` sinon. Sur les événements complets, `"true"` signifie que la valeur par défaut de 30 jours s'appliquait1346* `used_default` : `"true"` quand aucune source de paramètres lisible ne définit `cleanupPeriodDays`, `"false"` sinon. Sur les événements complets, `"true"` signifie que la valeur par défaut de 30 jours s'appliquait

1341* `skip_reason` : Pourquoi Claude Code a mis en pause le balayage. Présent uniquement lorsque `result` est `"skipped"` :1347* `skip_reason` : Pourquoi Claude Code a mis en pause le balayage. Présent uniquement quand `result` est `"skipped"` :

1342 * `"user_source_disabled"` : Les paramètres utilisateur sont exclus, par exemple par le drapeau [`--setting-sources`](/docs/fr/cli-reference#cli-flags) ou l'option [`settingSources`](/docs/fr/agent-sdk/typescript#options) du SDK, et aucune source activée ne fournit `cleanupPeriodDays`1348 * `"user_source_disabled"` : Les paramètres utilisateur sont exclus, par exemple par le drapeau [`--setting-sources`](/docs/fr/cli-reference#cli-flags) ou l'option [`settingSources`](/docs/fr/agent-sdk/typescript#options) du SDK, et aucune source activée ne fournit `cleanupPeriodDays`

1343 * `"settings_unknowable"` : Un fichier de paramètres n'a pas pu être lu ou analysé, donc `cleanupPeriodDays` ou `desktopSessionCleanupPeriodDays` peut être défini à une valeur que Claude Code ne peut pas voir1349 * `"settings_unknowable"` : Un fichier de paramètres n'a pas pu être lu ou analysé, donc `cleanupPeriodDays` ou `desktopSessionCleanupPeriodDays` peut être défini à une valeur que Claude Code ne peut pas voir

1344 * `"settings_invalid_key_set"` : Les paramètres ont des erreurs de validation et `cleanupPeriodDays` ou `desktopSessionCleanupPeriodDays` est explicitement défini, donc revenir à la valeur par défaut pourrait supprimer ou conserver des fichiers contre ce paramètre1350 * `"settings_invalid_key_set"` : Les paramètres ont des erreurs de validation et `cleanupPeriodDays` ou `desktopSessionCleanupPeriodDays` est explicitement défini, donc revenir à la valeur par défaut pourrait supprimer ou conserver des fichiers contre ce paramètre

1345* `transcripts_deleted` : Nombre de transcriptions de session, les fichiers `~/.claude/projects/*/*.jsonl` de niveau supérieur, que le balayage a supprimés1351* `transcripts_deleted` : Nombre de transcriptions de session, les fichiers `~/.claude/projects/*/*.jsonl` de niveau supérieur, que le balayage a supprimés

1346* `transcripts_exempted_desktop` : Nombre de transcriptions au-delà de la période de rétention que le balayage a conservées selon la [règle Claude Desktop et Cowork](/docs/fr/claude-directory#cleaned-up-automatically). Celles-ci ne comptent pas vers `files_past_cutoff`. Nécessite Claude Code v2.1.248 ou ultérieur1352* `transcripts_exempted_desktop` : Nombre de transcriptions au-delà de la période de rétention que le balayage a conservées selon la [règle Claude Desktop et Cowork](/docs/fr/claude-directory#cleaned-up-automatically). Celles-ci ne comptent pas vers `files_past_cutoff`. Nécessite Claude Code v2.1.248 ou ultérieur

1347* `session_files_deleted` : Nombre d'artefacts que le balayage des fichiers de session a supprimés : transcriptions plus fichiers compagnons par session tels que les sidecars, les enregistrements et les résultats d'outils1353* `session_files_deleted` : Nombre d'artefacts que le balayage des fichiers de session a supprimés : transcriptions plus fichiers compagnons par session tels que les barres latérales, les enregistrements et les résultats d'outils

1348* `artifacts_deleted` : Nombre total d'éléments que le balayage a supprimés dans les répertoires de données qu'il couvre, y compris les fichiers de session. Certains balayages comptent un arborescence entière supprimée comme un élément et quelques passes de nettoyage ne contribuent pas au compteur, donc traitez la valeur comme un plancher plutôt qu'un nombre exact1354* `artifacts_deleted` : Nombre total d'éléments que le balayage a supprimés à travers les répertoires de données qu'il couvre, y compris les fichiers de session. Certains balayages comptent un arbre de répertoires supprimé entier comme un élément et quelques passes de nettoyage ne contribuent pas au compteur, donc traitez la valeur comme un plancher plutôt qu'un nombre de fichiers exact

1349* `files_retained_fresh` : Fichiers inspectés et laissés en place car ils sont toujours dans la période de rétention. Seuls les balayages par fichier comptent ceux-ci, donc la valeur est un plancher ; une valeur non nulle est l'état stable normal1355* `files_retained_fresh` : Fichiers inspectés et laissés en place car ils sont toujours dans la période de rétention. Seuls les balayages par fichier comptent ceux-ci, donc la valeur est un plancher ; une valeur non nulle est l'état stable normal

1350* `files_past_cutoff` : Fichiers plus anciens que la période de rétention que le balayage n'a pas pu supprimer, par exemple en raison d'une erreur de permission ou d'un fichier maintenu ouvert. Une valeur supérieure à zéro signifie que les fichiers ont dépassé la période de rétention configurée ; zéro n'est pas la preuve qu'aucun ne l'a fait, car une suppression échouée d'un répertoire entier compte vers `error_count` à la place1356* `files_past_cutoff` : Fichiers plus anciens que la période de rétention que le balayage n'a pas pu supprimer, par exemple en raison d'une erreur de permission ou d'un fichier maintenu ouvert. Une valeur supérieure à zéro signifie que les fichiers ont dépassé la période de rétention configurée ; zéro n'est pas la preuve qu'aucun ne l'a fait, car une suppression échouée d'un répertoire entier compte vers `error_count` à la place

1351* `error_count` : Nombre d'erreurs que le balayage a rencontrées lors de la liste ou de la suppression de fichiers1357* `error_count` : Nombre d'erreurs que le balayage a rencontrées lors de la liste ou de la suppression de fichiers


1354 Événement de paramètres gérés résolus1360 Événement de paramètres gérés résolus

1355</h4>1361</h4>

1356 1362 

1357Enregistré avec les [paramètres gérés](/docs/fr/managed-settings) qu'une session a résolus : une fois au démarrage de la session, à nouveau lorsque les paramètres gérés ou l'état de l'[assistant de politique](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) change pendant la session, et lorsque Claude Code refuse de démarrer ou termine la session pour l'une des raisons que l'attribut `error.type` énumère.1363Enregistré avec les [paramètres gérés](/docs/fr/managed-settings) qu'une session a résolus : une fois au démarrage de la session, à nouveau quand soit les paramètres gérés soit l'état de l'[assistant de politique](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) change pendant la session, et quand Claude Code refuse de démarrer ou termine la session pour l'une des raisons que l'attribut `error.type` liste.

1358Utilisez cet événement pour trouver les machines exécutées sur une source gérée inattendue, les machines dont l'assistant de politique échoue, et la raison pour laquelle une machine a refusé de démarrer.1364Utilisez cet événement pour trouver les machines exécutées sur une source gérée inattendue, les machines dont l'assistant de politique échoue, et la raison pour laquelle une machine a refusé de démarrer.

1359Nécessite Claude Code v2.1.274 ou ultérieur.1365Nécessite Claude Code v2.1.274 ou ultérieur.

1360 1366 

1361Par défaut, l'événement porte les sources gérées et l'état de l'assistant de politique mais pas les paramètres eux-mêmes. Pour ajouter l'attribut `managed_settings.settings` masqué et le digest `managed_settings.resolved_sha256`, définissez `OTEL_LOG_MANAGED_SETTINGS=1` :1367Par défaut, l'événement porte les sources gérées et l'état de l'assistant de politique mais pas les paramètres eux-mêmes. Pour ajouter l'attribut `managed_settings.settings` rédacté et le digest `managed_settings.resolved_sha256`, définissez `OTEL_LOG_MANAGED_SETTINGS=1` :

1362 1368 

1363* Définissez-le dans le bloc `env` des paramètres gérés, des paramètres utilisateur, ou `--settings`, ou dans l'environnement avec lequel vous lancez Claude Code. Une valeur dans les paramètres de projet ou locaux ne l'active pas, car un référentiel cloné peut les écrire.1369* Définissez-le dans le bloc `env` des paramètres gérés, des paramètres utilisateur, ou `--settings`, ou dans l'environnement avec lequel vous lancez Claude Code. Une valeur dans les paramètres du projet ou locaux ne l'active pas, car un référentiel cloné peut les écrire.

1364* Les paramètres gérés par serveur peuvent le définir sans afficher la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs), car la variable ajoute uniquement votre propre politique masquée de l'organisation à un événement que votre organisation reçoit déjà.1370* Les paramètres gérés par le serveur peuvent le définir sans afficher la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs), car la variable ajoute uniquement votre propre politique rédactée de l'organisation à un événement que votre organisation reçoit déjà.

1365 1371 

1366Dans une session interactive dans un dossier que vous n'avez pas [approuvé](/docs/fr/permissions#what-runs-before-you-trust-a-folder), Claude Code n'exporte pas l'événement de refus, car les paramètres de projet et locaux pourraient pointer l'exportation vers un collecteur différent avant l'approbation.1372Dans une session interactive dans un dossier que vous n'avez pas [approuvé](/docs/fr/permissions#what-runs-before-you-trust-a-folder), Claude Code n'exporte pas l'événement de refus.

1367 1373 

1368**Nom de l'événement** : `claude_code.managed_settings_resolved`1374**Nom de l'événement** : `claude_code.managed_settings_resolved`

1369 1375 


1371 1377 

1372* Tous les [attributs standard](#standard-attributes)1378* Tous les [attributs standard](#standard-attributes)

1373* `event.name` : `"managed_settings_resolved"`1379* `event.name` : `"managed_settings_resolved"`

1374* `event.timestamp` : Horodatage ISO 86011380* `event.timestamp` : Timestamp ISO 8601

1375* `event.sequence` : Compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)1381* `event.sequence` : compteur par processus pour ordonner les événements, décrit sous [Attributs de corrélation d'événements](#event-correlation-attributes)

1376* `managed_settings.trigger` : `"startup"` pour l'événement de démarrage de session, `"change"` lorsque les paramètres gérés ou l'état de l'assistant de politique ont changé plus tard dans la session, ou `"refused"` lorsqu'une politique de paramètres gérés a arrêté la session. Claude Code envoie un événement `change` uniquement lorsqu'un attribut diffère du dernier événement qu'il a envoyé, et une valeur de paramètre modifiée compte même lorsque `OTEL_LOG_MANAGED_SETTINGS` est désactivé1382* `managed_settings.trigger` : `"startup"` pour l'événement de démarrage de session, `"change"` quand les paramètres gérés ou l'état de l'assistant de politique ont changé plus tard dans la session, ou `"refused"` quand une politique de paramètres gérés a arrêté la session. Claude Code envoie un événement `change` uniquement quand un attribut diffère du dernier événement qu'il a envoyé, et une valeur de paramètre modifiée compte même quand `OTEL_LOG_MANAGED_SETTINGS` est désactivé

1377* `error.type` : pourquoi Claude Code a arrêté la session. Présent uniquement sur les événements `refused` :1383* `error.type` : pourquoi Claude Code a arrêté la session. Présent uniquement sur les événements `refused` :

1378 * `"helper_failed"` : une [exécution d'assistant de politique a échoué](/docs/fr/settings-reference#helper-failures)1384 * `"helper_failed"` : une [exécution d'assistant de politique a échoué](/docs/fr/settings-reference#helper-failures)

1379 * `"policy_invalid"` : les paramètres gérés contiennent une erreur qui empêche Claude Code de démarrer, ou une source d'administration n'a pas pu être chargée, donc Claude Code ne peut pas vérifier l'application de la connexion à l'organisation1385 * `"policy_invalid"` : les paramètres gérés contiennent une erreur qui arrête Claude Code de démarrer, ou une source d'administration n'a pas pu se charger, donc Claude Code ne peut pas vérifier l'application de la connexion de l'organisation

1380 * `"consent_rejected"` : l'utilisateur a rejeté la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) pour les paramètres gérés par serveur1386 * `"consent_rejected"` : l'utilisateur a rejeté la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) pour les paramètres gérés par le serveur

1381 * `"force_refresh_failed"` : la récupération de paramètres que [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh) nécessite a échoué1387 * `"force_refresh_failed"` : l'extraction de paramètres que [`forceRemoteSettingsRefresh`](/docs/fr/settings-reference#forceremotesettingsrefresh) nécessite a échoué

1382 * `"gateway_rejected"` : une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) a répondu au chargement des paramètres gérés avec HTTP 4031388 * `"gateway_rejected"` : une [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) a répondu au chargement des paramètres gérés avec HTTP 403

1383 * `"version_below_minimum"` : cette version de Claude Code est inférieure à [`requiredMinimumVersion`](/docs/fr/settings-reference#requiredminimumversion) ou supérieure à [`requiredMaximumVersion`](/docs/fr/settings-reference#requiredmaximumversion)1389 * `"version_below_minimum"` : cette version de Claude Code est en dessous de [`requiredMinimumVersion`](/docs/fr/settings-reference#requiredminimumversion) ou au-dessus de [`requiredMaximumVersion`](/docs/fr/settings-reference#requiredmaximumversion)

1384 * `"_OTHER"` : le chargement des paramètres gérés de la passerelle d'applications Claude a échoué pour une autre raison1390 * `"_OTHER"` : le chargement des paramètres gérés de la passerelle d'applications Claude a échoué pour une autre raison

1385* `managed_settings.sources` : chaque source gérée qui fournit au moins une [clé de politique](/docs/fr/managed-settings#how-claude-code-combines-managed-sources), priorité la plus élevée en premier, y compris les sources dont les clés ne prennent pas effet sous `first-wins`. Les valeurs sont `"remote"`, `"plist"` ou `"hklm"` pour la politique MDM ou au niveau du système d'exploitation, `"file"` pour les fichiers de paramètres gérés et les drop-ins, `"parent"` lorsqu'un [hôte d'intégration](/docs/fr/managed-settings#let-an-embedding-host-add-policy) fournit des paramètres, et `"hkcu"` pour la [valeur de registre Windows HKCU](/docs/fr/managed-settings#where-each-mechanism-stores-the-policy) lorsque Claude Code la [lit](/docs/fr/managed-settings#how-claude-code-combines-managed-sources). Une source qui porte uniquement des clés de contrôle, ou que Claude Code n'a pas pu lire, n'est pas énumérée. Émis en tant que tableau de chaînes, vide lorsqu'aucune source gérée ne fournit une clé de politique1391* `managed_settings.sources` : chaque source gérée qui fournit au moins une [clé de politique](/docs/fr/managed-settings#how-claude-code-combines-managed-sources), priorité la plus élevée en premier, y compris les sources dont les clés ne prennent pas effet sous `first-wins`. Les valeurs sont `"remote"`, `"plist"` ou `"hklm"` pour la politique MDM ou au niveau du système d'exploitation, `"file"` pour les fichiers de paramètres gérés et les suppressions, `"parent"` quand un [hôte d'intégration](/docs/fr/managed-settings#let-an-embedding-host-add-policy) fournit des paramètres, et `"hkcu"` pour la [valeur du registre Windows HKCU](/docs/fr/managed-settings#where-each-mechanism-stores-the-policy) quand Claude Code la [lit](/docs/fr/managed-settings#how-claude-code-combines-managed-sources). Une source qui porte uniquement des clés de contrôle, ou que Claude Code n'a pas pu lire, n'est pas listée. Émis comme un tableau de chaînes, vide quand aucune source gérée ne fournit une clé de politique

1386* `managed_settings.source_behavior` : la valeur [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) que Claude Code a lue, `"first-wins"` ou `"merge"`. `"first-wins"` lorsqu'aucune source ne définit la clé1392* `managed_settings.source_behavior` : la valeur [`managedSourcesBehavior`](/docs/fr/settings-reference#managedsourcesbehavior) que Claude Code a lue, `"first-wins"` ou `"merge"`. `"first-wins"` quand aucune source ne définit la clé

1387* `managed_settings.helper.state` : état de l'assistant de politique que la source MDM ou fichier sélectionnée configure :1393* `managed_settings.helper.state` : état de l'assistant de politique que la source MDM ou fichier sélectionnée configure :

1388 * `"ok"` : la sortie de l'assistant sert de paramètres gérés1394 * `"ok"` : la sortie de l'assistant sert de paramètres gérés

1389 * `"bad_path"`, `"not_a_file"`, `"exit_nonzero"`, `"timed_out"`, `"oversize"`, `"parse_failed"`, `"envelope_invalid"`, ou `"schema_rejected"` : la dernière exécution de l'assistant a échoué. Les [défaillances d'assistant](/docs/fr/settings-reference#helper-failures) décrivent les cas1395 * `"bad_path"`, `"not_a_file"`, `"exit_nonzero"`, `"timed_out"`, `"oversize"`, `"parse_failed"`, `"envelope_invalid"`, ou `"schema_rejected"` : la dernière exécution de l'assistant a échoué. Les [défaillances d'assistant](/docs/fr/settings-reference#helper-failures) décrivent les cas

1390 * `"none"` : aucun assistant n'est configuré, ou la source qui le configure n'est pas une politique MDM ou un fichier de paramètres gérés1396 * `"none"` : aucun assistant n'est configuré, ou la source qui le configure n'est pas une politique MDM ou un fichier de paramètres gérés

1391* `managed_settings.helper.applied` : `"output"` tandis que la sortie propre de l'assistant sert de paramètres gérés, `"none"` lorsqu'elle ne le fait pas1397* `managed_settings.helper.applied` : `"output"` tandis que la propre sortie de l'assistant sert de paramètres gérés, `"none"` quand ce n'est pas le cas

1392* `managed_settings.helper.entry` : `"policyHelper"` lorsque Claude Code a sélectionné un [`policyHelper`](/docs/fr/settings-reference#policyhelper). Absent lorsqu'il n'a sélectionné aucun assistant1398* `managed_settings.helper.entry` : `"policyHelper"` quand Claude Code a sélectionné un [`policyHelper`](/docs/fr/settings-reference#policyhelper). Absent quand il n'a sélectionné aucun assistant

1393* `managed_settings.helper.path` : le [`path`](/docs/fr/settings-reference#policyhelper-path) configuré de l'assistant. Présent chaque fois que Claude Code a sélectionné un assistant, que `OTEL_LOG_MANAGED_SETTINGS` soit défini ou non1399* `managed_settings.helper.path` : le [`path`](/docs/fr/settings-reference#policyhelper-path) configuré de l'assistant. Présent chaque fois que Claude Code a sélectionné un assistant, que `OTEL_LOG_MANAGED_SETTINGS` soit défini ou non

1394* `managed_settings.resolved_sha256` (lorsque `OTEL_LOG_MANAGED_SETTINGS=1`) : SHA-256 des paramètres gérés résolus avant masquage, sérialisés en JSON avec les clés triées récursivement et sans espace blanc. Les machines avec le même digest exécutent la même politique. Claude Code envoie le digest uniquement avec l'opt-in car une politique courte peut être récupérée en hachant des suppositions. Absent lorsqu'aucun paramètre géré n'a été résolu, et sur les événements `refused`1400* `managed_settings.resolved_sha256` (quand `OTEL_LOG_MANAGED_SETTINGS=1`) : SHA-256 des paramètres gérés résolus avant rédaction, sérialisé en JSON avec les clés triées récursivement et sans espace blanc. Les machines avec le même digest exécutent la même politique. Claude Code envoie le digest uniquement avec l'opt-in car une politique courte peut être récupérée en hachant des suppositions. Absent quand aucun paramètre géré n'a été résolu, et sur les événements `refused`

1395* `managed_settings.settings` (lorsque `OTEL_LOG_MANAGED_SETTINGS=1`) : les noms et la forme des paramètres gérés résolus en tant que chaîne JSON, avec les valeurs masquées. Absent sur les événements `refused`. Claude Code le construit à partir de son schéma de paramètres :1401* `managed_settings.settings` (quand `OTEL_LOG_MANAGED_SETTINGS=1`) : les noms et la forme des paramètres gérés résolus sous forme de chaîne JSON, avec les valeurs rédactées. Absent sur les événements `refused`. Claude Code le construit à partir de son schéma de paramètres :

1396 1402 

1397 * Un nom de paramètre que le schéma déclare est exporté, et une clé qu'il ne déclare pas est laissée de côté1403 * Un nom de paramètre que le schéma déclare est exporté, et une clé qu'il ne déclare pas est laissée de côté

1398 * Les booléens, les nombres et les valeurs de chaîne que le schéma restreint à un ensemble fixe d'options, tels que `permissions.defaultMode`, sont exportés tels quels. `sandbox.network.httpProxyPort` et `sandbox.network.socksProxyPort` sont exportés en tant que `"[REDACTED]"`1404 * Les booléens, les nombres et les valeurs de chaîne que le schéma restreint à un ensemble fixe d'options, par exemple `permissions.defaultMode`, sont exportés tels quels. `sandbox.network.httpProxyPort` et `sandbox.network.socksProxyPort` sont exportés comme `"[REDACTED]"`

1399 * Chaque autre chaîne, telle que `model`, `apiKeyHelper`, chaque valeur `env`, chaque URL et chaque commande, est exportée en tant que `"[REDACTED]"`1405 * Chaque autre chaîne, par exemple `model`, `apiKeyHelper`, chaque valeur `env`, chaque URL et chaque commande, est exportée comme `"[REDACTED]"`

1400 * Les noms d'entrée des cartes, tels que les noms de variables `env` et les ID de plugins, sont exportés tels quels. Un paramètre dont les entrées le schéma ne tape pas, tels que `vimInsertModeRemaps`, est exporté en tant que `"[REDACTED]"` unique, et `sandbox.ignoreViolations` est exporté en tant que liste de ses listes de chemins sans les motifs de commande1406 * Les noms d'entrée des cartes, par exemple les noms de variables `env` et les ID de plugins, sont exportés tels quels. Un paramètre dont les entrées le schéma ne tape pas, par exemple `vimInsertModeRemaps`, est exporté comme un seul `"[REDACTED]"`, et `sandbox.ignoreViolations` est exporté comme une liste de ses listes de chemins sans les modèles de commande

1401 * Une liste conserve sa longueur, avec chaque entrée masquée par les mêmes règles1407 * Une liste conserve sa longueur, avec chaque entrée rédactée par les mêmes règles

1402 * Une règle `permissions.allow`, `permissions.deny`, ou `permissions.ask` est exportée en tant que son nom d'outil avec le contenu masqué, telle que `Read([REDACTED])`, lorsque l'outil est intégré à cette version de Claude Code ou est une référence `mcp__` telle que `mcp__jira__create_issue`. Toute autre règle est exportée en tant que `"[REDACTED]"`1408 * Une règle `permissions.allow`, `permissions.deny`, ou `permissions.ask` est exportée comme son nom d'outil avec le contenu rédacté, par exemple `Read([REDACTED])`, quand l'outil est intégré à cette version de Claude Code ou est une référence `mcp__` telle que `mcp__jira__create_issue`. Toute autre règle est exportée comme `"[REDACTED]"`

1403 * Les hooks suivent les mêmes règles, donc les champs d'option fixe et numériques tels que `type` et `timeout` s'affichent, tandis que chaque commande, URL, `matcher`, et condition `if` est exportée en tant que `"[REDACTED]"`1409 * Les hooks suivent les mêmes règles, donc les champs à option fixe et numériques tels que `type` et `timeout` s'affichent, tandis que chaque commande, URL, `matcher`, et condition `if` est exportée comme `"[REDACTED]"`

1404 1410 

1405 Par exemple, les paramètres gérés avec `apiKeyHelper`, deux variables `env`, et une règle de refus sont exportés en tant que `{"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}`.1411 Par exemple, les paramètres gérés avec `apiKeyHelper`, deux variables `env`, et une règle de refus sont exportés comme `{"apiKeyHelper":"[REDACTED]","env":{"HTTPS_PROXY":"[REDACTED]","CLAUDE_CODE_ENABLE_TELEMETRY":"[REDACTED]"},"permissions":{"deny":["Read([REDACTED])"]}}`.

1406 1412 

1407 Claude Code coupe la valeur à 8 Ko d'UTF-8, et la valeur coupée n'est pas un JSON valide1413 Claude Code coupe la valeur à 8 Ko d'UTF-8, et la valeur coupée n'est pas du JSON valide

1408* `managed_settings.settings_truncated` (lorsque `managed_settings.settings` est présent) : `true` lorsque Claude Code a coupé `managed_settings.settings` à 8 Ko, `false` sinon. Émis en tant que booléen, pas une chaîne.1414* `managed_settings.settings_truncated` (quand `managed_settings.settings` est présent) : `true` quand Claude Code a coupé `managed_settings.settings` à 8 Ko, `false` sinon. Émis comme un booléen, pas une chaîne

1409 1415 

1410<h2 id="interpret-metrics-and-events-data">1416<h2 id="interpret-metrics-and-events-data">

1411 Interpréter les données de métriques et d'événements1417 Interpréter les données de métriques et d'événements

Details

245| `registry.npmjs.org` | Installations de plugins (récupération de packages de plugins source npm et installation des dépendances de packages Node.js des plugins), serveurs MCP lancés avec `npx` et le registre de packages pour les installations npm et bun de Claude Code lui-même |245| `registry.npmjs.org` | Installations de plugins (récupération de packages de plugins source npm et installation des dépendances de packages Node.js des plugins), serveurs MCP lancés avec `npx` et le registre de packages pour les installations npm et bun de Claude Code lui-même |

246| `bridge.claudeusercontent.com` | Extension [Claude in Chrome](/docs/fr/chrome) WebSocket bridge |246| `bridge.claudeusercontent.com` | Extension [Claude in Chrome](/docs/fr/chrome) WebSocket bridge |

247| `*.frame.claudeusercontent.com` | Lectures de contenu [Artifact](/docs/fr/artifacts). L'interface de ligne de commande récupère les fichiers d'un artifact depuis cet hôte lorsque Claude en ouvre un, et uniquement lorsque l'outil Artifact est [disponible](/docs/fr/artifacts#availability) pour votre compte. Pour désactiver l'outil et supprimer cette exigence, définissez [`"enableArtifact": false`](/docs/fr/settings-reference#enableartifact) ou [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/fr/env-vars) ; Claude Code honore également le paramètre [`disableArtifact`](/docs/fr/settings-reference#disableartifact) déprécié. Consultez [Désactiver les artifacts](/docs/fr/artifacts#disable-artifacts) pour voir comment ces paramètres interagissent |247| `*.frame.claudeusercontent.com` | Lectures de contenu [Artifact](/docs/fr/artifacts). L'interface de ligne de commande récupère les fichiers d'un artifact depuis cet hôte lorsque Claude en ouvre un, et uniquement lorsque l'outil Artifact est [disponible](/docs/fr/artifacts#availability) pour votre compte. Pour désactiver l'outil et supprimer cette exigence, définissez [`"enableArtifact": false`](/docs/fr/settings-reference#enableartifact) ou [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/fr/env-vars) ; Claude Code honore également le paramètre [`disableArtifact`](/docs/fr/settings-reference#disableartifact) déprécié. Consultez [Désactiver les artifacts](/docs/fr/artifacts#disable-artifacts) pour voir comment ces paramètres interagissent |

248| `github.com` | Clonage des [marketplaces de plugins](/docs/fr/plugin-marketplaces) et des plugins hébergés sur GitHub, y compris la marketplace officielle Anthropic, via HTTPS ou SSH. Pour cloner les sources GitHub `owner/repo` via HTTPS uniquement, définissez [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/fr/env-vars) |248| `github.com` | Clonage des [marketplaces de plugins](/docs/fr/plugins/overview) et des plugins hébergés sur GitHub, y compris la marketplace officielle Anthropic, via HTTPS ou SSH. Pour cloner les sources GitHub `owner/repo` via HTTPS uniquement, définissez [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/fr/env-vars) |

249| `raw.githubusercontent.com` | Flux de changelog pour [`/release-notes`](/docs/fr/commands). Dans les sessions interactives, Claude Code le récupère également en arrière-plan au démarrage lorsque son changelog en cache ne couvre pas encore la version en cours d'exécution, par exemple au premier démarrage après une mise à jour ; les sessions non interactives et cloud ne le récupèrent jamais |249| `raw.githubusercontent.com` | Flux de changelog pour [`/release-notes`](/docs/fr/commands). Dans les sessions interactives, Claude Code le récupère également en arrière-plan au démarrage lorsque son changelog en cache ne couvre pas encore la version en cours d'exécution, par exemple au premier démarrage après une mise à jour ; les sessions non interactives et cloud ne le récupèrent jamais |

250| `*-review.googlesource.com` | Recherche de changement Gerrit sur les checkouts `googlesource.com`. Lorsqu'une session d'onglet Claude Desktop Code démarre ou reprend sur un checkout [approuvé](/docs/fr/permissions#project-allow-rules-and-workspace-trust) dont l'`origin` est un hôte `googlesource.com`, Claude Code demande anonymement au serveur `-review` de cet hôte le changement ouvert correspondant au `Change-Id` de HEAD, une fois par démarrage ou reprise. Les autres types de sessions ignorent la recherche, et aucun autre hôte Gerrit n'est contacté. Facultatif : désactiver avec [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars) |250| `*-review.googlesource.com` | Recherche de changement Gerrit sur les checkouts `googlesource.com`. Lorsqu'une session d'onglet Claude Desktop Code démarre ou reprend sur un checkout [approuvé](/docs/fr/permissions#project-allow-rules-and-workspace-trust) dont l'`origin` est un hôte `googlesource.com`, Claude Code demande anonymement au serveur `-review` de cet hôte le changement ouvert correspondant au `Change-Id` de HEAD, une fois par démarrage ou reprise. Les autres types de sessions ignorent la recherche, et aucun autre hôte Gerrit n'est contacté. Facultatif : désactiver avec [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars) |

251| `http-intake.logs.us5.datadoghq.com` | Événements de télémétrie opérationnelle, envoyés uniquement lorsque l'interface de ligne de commande utilise directement l'API Anthropic, jamais pour Amazon Bedrock, la plateforme d'agent de Google Cloud ou Microsoft Foundry. Facultatif : désactiver avec [`DISABLE_TELEMETRY`](/docs/fr/data-usage#telemetry-services) ou `DO_NOT_TRACK` |251| `http-intake.logs.us5.datadoghq.com` | Événements de télémétrie opérationnelle, envoyés uniquement lorsque l'interface de ligne de commande utilise directement l'API Anthropic, jamais pour Amazon Bedrock, la plateforme d'agent de Google Cloud ou Microsoft Foundry. Facultatif : désactiver avec [`DISABLE_TELEMETRY`](/docs/fr/data-usage#telemetry-services) ou `DO_NOT_TRACK` |

Details

171 </Step>171 </Step>

172</Steps>172</Steps>

173 173 

174Les [Plugins](/docs/fr/plugins-reference) peuvent également fournir des styles de sortie dans un répertoire `output-styles/`.174Les [Plugins](/docs/fr/plugins/manifest-reference) peuvent également fournir des styles de sortie dans un répertoire `output-styles/`.

175 175 

176<h3 id="frontmatter">176<h3 id="frontmatter">

177 Référence du frontmatter177 Référence du frontmatter


228 228 

229* [Settings](/docs/fr/settings) : où se trouve le champ `outputStyle` et comment fonctionne la précédence des paramètres229* [Settings](/docs/fr/settings) : où se trouve le champ `outputStyle` et comment fonctionne la précédence des paramètres

230* [Permission modes](/docs/fr/permission-modes) : comment le style Proactive se compare au mode auto230* [Permission modes](/docs/fr/permission-modes) : comment le style Proactive se compare au mode auto

231* [Plugins](/docs/fr/plugins) : empaquetez et distribuez les styles de sortie aux côtés des skills, des hooks et des agents231* [Plugins](/docs/fr/plugins/overview) : empaquetez et distribuez les styles de sortie aux côtés des skills, des hooks et des agents

232* [Debug your configuration](/docs/fr/debug-your-config) : diagnostiquez pourquoi un style de sortie ne prend pas effet232* [Debug your configuration](/docs/fr/debug-your-config) : diagnostiquez pourquoi un style de sortie ne prend pas effet

Details

332 Examen du classificateur côté serveur332 Examen du classificateur côté serveur

333</h3>333</h3>

334 334 

335Sur les plans Enterprise et sur les comptes qui utilisent l'API Claude, sur [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Amazon Bedrock, la plateforme Agent de Google Cloud et Microsoft Foundry, et chaque fois que vous pointez `ANTHROPIC_BASE_URL` vers une [passerelle LLM ou un proxy](/docs/fr/llm-gateway), Claude Code en mode auto demande au serveur d'examiner [les actions qui vont au classificateur](#how-the-classifier-evaluates-actions) dans le cadre des demandes de modèle de la session. Là où le serveur les examine, ses verdicts décident ces actions. Là où il ne le fait pas, généralement parce qu'une passerelle LLM ou un proxy interfère avec le trafic, ou parce que la plateforme, la région ou les credentials n'ont pas encore de vérifications côté serveur, Claude Code revient à ses propres demandes de classificateur, et une fois que ce retour se maintient pour le reste de la session, il affiche un [avis sur les frais de demande de classificateur](/docs/fr/auto-mode-classifier-billing) sur les comptes où ces demandes sont facturées. Pour ignorer la demande au serveur et toujours utiliser les propres demandes de classificateur de Claude Code, définissez [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/fr/env-vars). La variable n'est pas lue sur une connexion directe à l'API Anthropic. Si vous définissez `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` et laissez `CLAUDE_CODE_AUTO_MODE_SERVER` non défini, Claude Code cesse également de demander au serveur.335En mode auto, Claude Code peut demander au serveur de vérifier les actions que [l'ordre de décision](#how-the-classifier-evaluates-actions) envoie pour examen, dans le cadre des demandes de modèle de la session, à la place d'envoyer ses propres demandes de classificateur. Ces sessions demandent :

336 336 

337Demander au serveur par défaut nécessite Claude Code v2.1.278 ou ultérieur.337* **Une connexion directe à l'API Anthropic** : dans une session de terminal interactive, sur tous les plans claude.ai et sur les comptes qui utilisent l'API Claude, à mesure qu'Anthropic le déploie. Nécessite Claude Code v2.1.271 ou ultérieur sur les plans Pro, Max et Team, et v2.1.278 ou ultérieur sur les plans Enterprise et les comptes API Claude. À partir de v2.1.282, une session qui [ne récupère pas les drapeaux de fonctionnalité](/docs/fr/env-vars#features-that-need-feature-flag-fetching), par exemple parce que vous avez désactivé la télémétrie, demande au serveur par défaut dans n'importe quel type de session.

338* **Un fournisseur cloud, ou une passerelle LLM ou un proxy** : sur [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Amazon Bedrock, la plateforme Agent de Google Cloud et Microsoft Foundry, et chaque fois que vous pointez `ANTHROPIC_BASE_URL` vers une [passerelle LLM ou un proxy](/docs/fr/llm-gateway), quel que soit votre plan. Demander au serveur par défaut nécessite Claude Code v2.1.278 ou ultérieur.

339* **Une session de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) connectée** : nécessite Claude Code v2.1.280 ou ultérieur

340 

341Là où le serveur examine les actions, ses verdicts les décident. Deux autres résultats sont possibles :

342 

343* **Le serveur n'examine pas la session** : une réponse se termine sans résultats d'examen, ou le serveur répond qu'il n'examine pas cette session. Les causes les plus courantes sont une passerelle LLM ou un proxy qui supprime la demande d'examen ou les résultats, et une plateforme, une région ou des credentials qui n'ont pas encore de vérifications côté serveur. Claude Code revient à ses propres demandes de classificateur. Une fois que ce retour se maintient pour le reste de la session, il affiche un [avis sur les frais de demande de classificateur](/docs/fr/auto-mode-classifier-billing) sur les comptes où ces demandes sont facturées.

344* **Le serveur ne donne pas de verdict pour une action** : Claude Code refuse l'action plutôt que de l'exécuter sans examen. Sur n'importe quelle connexion, cela se produit lorsque la réponse se termine avant l'arrivée des résultats d'examen ou que les résultats arrivent sous une forme que Claude Code ne peut pas lire. Une passerelle LLM ou un proxy qui raccourcit les réponses ou réécrit les résultats peut causer l'un ou l'autre. Sur une connexion directe à l'API Anthropic, cela se produit également lorsque la vérification du serveur échoue pour l'action, par exemple en dépassant le délai d'attente. [Le serveur n'a retourné aucun verdict de sécurité](/docs/fr/errors#the-server-returned-no-safety-verdict) couvre le message de refus, ce qui se passe lorsque les refus se répètent, et ce qu'il faut faire.

345 

346Pour ignorer la demande au serveur et toujours utiliser les propres demandes de classificateur de Claude Code, définissez [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/fr/env-vars). Sur une connexion directe à l'API Anthropic, la variable nécessite Claude Code v2.1.281 ou ultérieur. La définir sur `1` là-bas active l'examen du serveur dans une session qui ne l'a pas encore, comme une session `-p` ou Agent SDK, sauf si vous avez également défini `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Si vous définissez `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` et laissez `CLAUDE_CODE_AUTO_MODE_SERVER` non défini, Claude Code cesse également de demander au serveur.

338 347 

339<h3 id="what-the-classifier-blocks-by-default">348<h3 id="what-the-classifier-blocks-by-default">

340 Ce que le classificateur bloque par défaut349 Ce que le classificateur bloque par défaut


476* **Une action bloquée** : Claude Code affiche une notification et répertorie l'action dans `/permissions` sous l'onglet **Recently denied**, où vous pouvez appuyer sur `r` pour la réessayer avec une approbation manuelle. Lorsque le classificateur produit [aucun verdict sur l'action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action), parce qu'une vérification de sécurité distincte du mode auto a refusé la propre demande du classificateur ou sa réponse n'a pas été analysée, Claude Code refuse l'action sans la notification ou l'entrée **Recently denied**.485* **Une action bloquée** : Claude Code affiche une notification et répertorie l'action dans `/permissions` sous l'onglet **Recently denied**, où vous pouvez appuyer sur `r` pour la réessayer avec une approbation manuelle. Lorsque le classificateur produit [aucun verdict sur l'action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action), parce qu'une vérification de sécurité distincte du mode auto a refusé la propre demande du classificateur ou sa réponse n'a pas été analysée, Claude Code refuse l'action sans la notification ou l'entrée **Recently denied**.

477* **Blocages répétés** : si le classificateur bloque une action 3 fois de suite ou 20 fois au total, le mode auto s'interrompt et Claude Code reprend l'invite. L'approbation de l'action invitée reprend le mode auto. Ces seuils ne sont pas configurables. Toute action autorisée réinitialise le compteur consécutif, tandis que le compteur total persiste pour la session et se réinitialise uniquement lorsque sa propre limite déclenche un retour. Claude Code ne compte pas un refus vers l'un ou l'autre seuil lorsqu'[une vérification de sécurité distincte du mode auto refuse la propre demande du classificateur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) ; l'entrée liée couvre comment Claude Code gère ces refus.486* **Blocages répétés** : si le classificateur bloque une action 3 fois de suite ou 20 fois au total, le mode auto s'interrompt et Claude Code reprend l'invite. L'approbation de l'action invitée reprend le mode auto. Ces seuils ne sont pas configurables. Toute action autorisée réinitialise le compteur consécutif, tandis que le compteur total persiste pour la session et se réinitialise uniquement lorsque sa propre limite déclenche un retour. Claude Code ne compte pas un refus vers l'un ou l'autre seuil lorsqu'[une vérification de sécurité distincte du mode auto refuse la propre demande du classificateur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) ; l'entrée liée couvre comment Claude Code gère ces refus.

478* **Sessions qui ne peuvent pas inviter** : une exécution `-p` [non interactive](/docs/fr/headless) sans [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) n'a pas d'invite pour revenir. Lorsque les blocages répétés atteignent un seuil, l'action ne s'exécute pas et Claude continue à travailler. La même chose s'applique lorsqu'[une vérification de sécurité distincte du mode auto refuse la demande du classificateur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action). Claude Code n'arrête pas l'exécution dans l'un ou l'autre cas.487* **Sessions qui ne peuvent pas inviter** : une exécution `-p` [non interactive](/docs/fr/headless) sans [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) n'a pas d'invite pour revenir. Lorsque les blocages répétés atteignent un seuil, l'action ne s'exécute pas et Claude continue à travailler. La même chose s'applique lorsqu'[une vérification de sécurité distincte du mode auto refuse la demande du classificateur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action). Claude Code n'arrête pas l'exécution dans l'un ou l'autre cas.

488* **Aucun verdict du serveur** : sous [examen du classificateur côté serveur](#server-side-classifier-review), Claude Code refuse une action pour laquelle le serveur ne donne pas de verdict, et arrête le tour après dix réponses de suite sans verdict. Voir [Le serveur n'a retourné aucun verdict de sécurité](/docs/fr/errors#the-server-returned-no-safety-verdict).

479* **Un changement de mode pendant une vérification** : si vous changez les modes de permission tandis qu'une vérification de classificateur est en attente, Claude Code rejette un verdict que le nouveau mode n'aurait pas demandé plutôt que de l'appliquer : vous êtes invité à l'approbation à la place, ou l'action est auto-refusée en [mode `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).489* **Un changement de mode pendant une vérification** : si vous changez les modes de permission tandis qu'une vérification de classificateur est en attente, Claude Code rejette un verdict que le nouveau mode n'aurait pas demandé plutôt que de l'appliquer : vous êtes invité à l'approbation à la place, ou l'action est auto-refusée en [mode `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).

480 490 

481Les blocages répétés signifient généralement que le classificateur manque de contexte sur votre infrastructure. Utilisez `/feedback` pour signaler les faux positifs, ou demandez à un administrateur de [configurer l'infrastructure approuvée](/docs/fr/auto-mode-config).491Les blocages répétés signifient généralement que le classificateur manque de contexte sur votre infrastructure. Utilisez `/feedback` pour signaler les faux positifs, ou demandez à un administrateur de [configurer l'infrastructure approuvée](/docs/fr/auto-mode-config).


492 * Une commande shell qui porte [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) est également acheminée vers le classificateur même lorsqu'une règle allow correspond, parce qu'une règle approuve la commande, pas ses hôtes502 * Une commande shell qui porte [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) est également acheminée vers le classificateur même lorsqu'une règle allow correspond, parce qu'une règle approuve la commande, pas ses hôtes

493 * Les règles ask qui correspondent sur le contenu d'une commande, comme `Bash(git push *)`, reviennent à une invite de permission503 * Les règles ask qui correspondent sur le contenu d'une commande, comme `Bash(git push *)`, reviennent à une invite de permission

494 2. Les actions en lecture seule et les éditions de fichiers dans votre répertoire de travail sont auto-approuvées, sauf les écritures vers [chemins protégés](#protected-paths) et [la première lecture en dehors des répertoires de travail](#first-read-outside-the-working-directories), qui vous invitent504 2. Les actions en lecture seule et les éditions de fichiers dans votre répertoire de travail sont auto-approuvées, sauf les écritures vers [chemins protégés](#protected-paths) et [la première lecture en dehors des répertoires de travail](#first-read-outside-the-working-directories), qui vous invitent

505 * Dans une session avec [examen du classificateur côté serveur](#server-side-classifier-review), les actions en lecture seule et les commandes shell [en sandbox](/docs/fr/sandboxing#sandbox-modes) attendent cet examen et sont bloquées si elle les signale

495 3. Tout le reste va au classificateur. Les outils connecteur et les outils MCP `requiresUserInteraction` qui vous invitent directement à l'étape 1 n'atteignent jamais le classificateur, donc ni une approbation requise par l'organisation ni une étape de consentement n'est auto-approuvée506 3. Tout le reste va au classificateur. Les outils connecteur et les outils MCP `requiresUserInteraction` qui vous invitent directement à l'étape 1 n'atteignent jamais le classificateur, donc ni une approbation requise par l'organisation ni une étape de consentement n'est auto-approuvée

496 4. Si le classificateur bloque, Claude reçoit la raison et essaie une alternative. Dans la plupart des sessions, la raison nomme la règle que le classificateur a correspondante, comme `[Data Exfiltration]`, plutôt que de donner une explication écrite ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)507 4. Si le classificateur bloque, Claude reçoit la raison et essaie une alternative. Dans la plupart des sessions, la raison nomme la règle que le classificateur a correspondante, comme `[Data Exfiltration]`, plutôt que de donner une explication écrite ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)

497 508 

permissions.md +4 −4

Details

278 Commandes en lecture seule278 Commandes en lecture seule

279</h4>279</h4>

280 280 

281Claude Code reconnaît un ensemble intégré de commandes Bash comme étant en lecture seule et les exécute sans invite d'autorisation dans tous les modes, sauf pour un chemin que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) protège. L'ensemble inclut `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` et les formes en lecture seule de `git`. L'ensemble n'est pas configurable ; pour exiger une invite pour l'une de ces commandes, ajoutez une règle `ask` ou `deny` pour celle-ci.281Claude Code reconnaît un ensemble intégré de commandes Bash comme étant en lecture seule et les exécute sans invite d'autorisation dans tous les modes, sauf pour un chemin que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) protège. L'ensemble inclut `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` et les formes en lecture seule de `git`. L'ensemble n'est pas configurable ; pour exiger une invite pour l'une de ces commandes, ajoutez une règle `ask` ou `deny` pour celle-ci. En mode auto, ces commandes peuvent également attendre l'examen du classificateur ; voir [comment le classificateur évalue les actions](/docs/fr/permission-modes#how-the-classifier-evaluates-actions).

282 282 

283Une redirection telle que `ls > out.txt` ajoute une vérification sur la cible. Voir [Redirections](#redirections).283Une redirection telle que `ls > out.txt` ajoute une vérification sur la cible. Voir [Redirections](#redirections).

284 284 


605 605 

606* Ses paramètres de projet, y compris ses règles d'autorisation et ses [hooks](/docs/fr/hooks)606* Ses paramètres de projet, y compris ses règles d'autorisation et ses [hooks](/docs/fr/hooks)

607* Ses serveurs [`.mcp.json`](/docs/fr/mcp#project-scope), soumis à la même [approbation de serveur](/docs/fr/mcp#project-server-approvals-and-workspace-trust) qu'au démarrage, et les serveurs MCP [local-scope](/docs/fr/mcp#local-scope) que vous y avez enregistrés607* Ses serveurs [`.mcp.json`](/docs/fr/mcp#project-scope), soumis à la même [approbation de serveur](/docs/fr/mcp#project-server-approvals-and-workspace-trust) qu'au démarrage, et les serveurs MCP [local-scope](/docs/fr/mcp#local-scope) que vous y avez enregistrés

608* Les [plugins](/docs/fr/plugins) que ses paramètres activent, ses [skills](/docs/fr/skills#discovery-from-parent-and-nested-directories), et ses [subagents](/docs/fr/sub-agents)608* Les [plugins](/docs/fr/plugins/overview) que ses paramètres activent, ses [skills](/docs/fr/skills#discovery-from-parent-and-nested-directories), et ses [subagents](/docs/fr/sub-agents)

609* Ses valeurs [`env`](/docs/fr/settings-reference#env), appliquées en plus des variables d'environnement des paramètres du répertoire précédent, qui restent en vigueur609* Ses valeurs [`env`](/docs/fr/settings-reference#env), appliquées en plus des variables d'environnement des paramètres du répertoire précédent, qui restent en vigueur

610 610 

611Claude Code déconnecte également les serveurs MCP [local-scope](/docs/fr/mcp#local-scope) du répertoire précédent et du projet, ainsi que les serveurs des [plugins](/docs/fr/mcp#plugin-provided-mcp-servers) qui ne sont plus activés après le déplacement. Il prend les [répertoires supplémentaires](#working-directories) à partir des paramètres du nouveau répertoire au lieu de ceux du répertoire précédent, et conserve les répertoires que vous avez ajoutés avec `--add-dir` ou `/add-dir`. Les hooks que le déplacement active reçoivent toujours [`${CLAUDE_PROJECT_DIR}`](/docs/fr/hooks#reference-scripts-by-path) défini à la racine du projet où la session a commencé.611Claude Code déconnecte également les serveurs MCP [local-scope](/docs/fr/mcp#local-scope) du répertoire précédent et du projet, ainsi que les serveurs des [plugins](/docs/fr/mcp#plugin-provided-mcp-servers) qui ne sont plus activés après le déplacement. Il prend les [répertoires supplémentaires](#working-directories) à partir des paramètres du nouveau répertoire au lieu de ceux du répertoire précédent, et conserve les répertoires que vous avez ajoutés avec `--add-dir` ou `/add-dir`. Les hooks que le déplacement active reçoivent toujours [`${CLAUDE_PROJECT_DIR}`](/docs/fr/hooks#reference-scripts-by-path) défini à la racine du projet où la session a commencé.


641Pour partager cette configuration entre les projets, utilisez l'une de ces approches :641Pour partager cette configuration entre les projets, utilisez l'une de ces approches :

642 642 

643* **Configuration au niveau utilisateur** : placez les fichiers dans `~/.claude/agents/`, `~/.claude/output-styles/` ou `~/.claude/settings.json` pour les rendre disponibles dans chaque projet643* **Configuration au niveau utilisateur** : placez les fichiers dans `~/.claude/agents/`, `~/.claude/output-styles/` ou `~/.claude/settings.json` pour les rendre disponibles dans chaque projet

644* **Plugins** : empaquetez et distribuez la configuration en tant que [plugin](/docs/fr/plugins) que les équipes peuvent installer644* **Plugins** : empaquetez et distribuez la configuration en tant que [plugin](/docs/fr/plugins/overview) que les équipes peuvent installer

645* **Lancer à partir du répertoire de configuration** : exécutez Claude Code à partir du répertoire contenant la configuration `.claude/` que vous souhaitez645* **Lancer à partir du répertoire de configuration** : exécutez Claude Code à partir du répertoire contenant la configuration `.claude/` que vous souhaitez

646 646 

647<h2 id="how-permissions-interact-with-sandboxing">647<h2 id="how-permissions-interact-with-sandboxing">


732| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |732| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

733| [Hooks](/docs/fr/hooks) dans les fichiers de paramètres, le bloc [`env`](/docs/fr/settings-reference#env) et les commandes d'assistance telles que [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), et les [hooks](/docs/fr/hooks#hooks-in-skills-and-agents) d'une compétence de projet et [`allowed-tools`](/docs/fr/skills#pre-approve-tools-for-a-skill) | Utilisé | Utilisé. La confiance de l'espace de travail ne bloque jamais les `allowed-tools` d'une compétence dans aucune session |733| [Hooks](/docs/fr/hooks) dans les fichiers de paramètres, le bloc [`env`](/docs/fr/settings-reference#env) et les commandes d'assistance telles que [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), et les [hooks](/docs/fr/hooks#hooks-in-skills-and-agents) d'une compétence de projet et [`allowed-tools`](/docs/fr/skills#pre-approve-tools-for-a-skill) | Utilisé | Utilisé. La confiance de l'espace de travail ne bloque jamais les `allowed-tools` d'une compétence dans aucune session |

734| Règles `permissions.allow` et `additionalDirectories` dans `.claude/settings.json` | Non utilisé jusqu'à ce que vous acceptiez la boîte de dialogue de confiance, qui réapparaît en les répertoriant | Non utilisé. Claude Code imprime un avertissement [`this workspace has not been trusted`](/docs/fr/errors#workspace-has-not-been-trusted) sur stderr |734| Règles `permissions.allow` et `additionalDirectories` dans `.claude/settings.json` | Non utilisé jusqu'à ce que vous acceptiez la boîte de dialogue de confiance, qui réapparaît en les répertoriant | Non utilisé. Claude Code imprime un avertissement [`this workspace has not been trusted`](/docs/fr/errors#workspace-has-not-been-trusted) sur stderr |

735| Hooks de frontmatter dans un [sous-agent](/docs/fr/sub-agents#hooks-in-subagent-frontmatter) de projet, un plugin [`@skills-dir`](/docs/fr/plugins-reference#skills-directory-plugins) de projet, et les entrées [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) du référentiel ou d'un répertoire `--add-dir` | Non utilisé, et aucune boîte de dialogue n'est proposée | Non utilisé |735| Hooks de frontmatter dans un [sous-agent](/docs/fr/sub-agents#hooks-in-subagent-frontmatter) de projet, un plugin [`@skills-dir`](/docs/fr/plugins/loading#plugins-shared-through-a-repository) de projet, et les entrées [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) du référentiel ou d'un répertoire `--add-dir` | Non utilisé, et aucune boîte de dialogue n'est proposée | Non utilisé |

736| [`mcpServers`](/docs/fr/sub-agents#scope-mcp-servers-to-a-subagent) en ligne dans le frontmatter d'un sous-agent du référentiel ou d'un répertoire `--add-dir`. Avant la v2.1.238, Claude Code chargeait ces serveurs dans les deux situations | Non utilisé, et aucune boîte de dialogue n'est proposée | Non utilisé |736| [`mcpServers`](/docs/fr/sub-agents#scope-mcp-servers-to-a-subagent) en ligne dans le frontmatter d'un sous-agent du référentiel ou d'un répertoire `--add-dir`. Avant la v2.1.238, Claude Code chargeait ces serveurs dans les deux situations | Non utilisé, et aucune boîte de dialogue n'est proposée | Non utilisé |

737| Serveurs dans `.mcp.json`, y compris ceux que le référentiel [approuve dans ses propres paramètres](/docs/fr/mcp#project-server-approvals-and-workspace-trust) | Claude Code vous demande avant de vous y connecter. Les approbations du référentiel lui-même ne comptent pas | Connecté sans demander, approuvé ou non. Le SDK ne les charge que lorsque `settingSources` inclut les paramètres du projet. `claude mcp list` dans le même dossier signale toujours un tel serveur comme en attente |737| Serveurs dans `.mcp.json`, y compris ceux que le référentiel [approuve dans ses propres paramètres](/docs/fr/mcp#project-server-approvals-and-workspace-trust) | Claude Code vous demande avant de vous y connecter. Les approbations du référentiel lui-même ne comptent pas | Connecté sans demander, approuvé ou non. Le SDK ne les charge que lorsque `settingSources` inclut les paramètres du projet. `claude mcp list` dans le même dossier signale toujours un tel serveur comme en attente |

738| Un [`headersHelper`](/docs/fr/mcp#trust-a-folder-before-its-headershelper-runs) sur un serveur dans `.mcp.json`. Avant la v2.1.238, Claude Code exécutait l'assistant dans les deux situations | Non exécuté jusqu'à ce que vous acceptiez la boîte de dialogue de confiance, qui réapparaît en nommant l'endroit où l'assistant est déclaré. Claude Code connecte le serveur avec ses `headers` statiques seuls jusqu'à ce moment | Non exécuté. Claude Code connecte le serveur avec ses `headers` statiques seuls et imprime une ligne [`headersHelper not run`](/docs/fr/errors#headershelper-not-run) par serveur sur stderr |738| Un [`headersHelper`](/docs/fr/mcp#trust-a-folder-before-its-headershelper-runs) sur un serveur dans `.mcp.json`. Avant la v2.1.238, Claude Code exécutait l'assistant dans les deux situations | Non exécuté jusqu'à ce que vous acceptiez la boîte de dialogue de confiance, qui réapparaît en nommant l'endroit où l'assistant est déclaré. Claude Code connecte le serveur avec ses `headers` statiques seuls jusqu'à ce moment | Non exécuté. Claude Code connecte le serveur avec ses `headers` statiques seuls et imprime une ligne [`headersHelper not run`](/docs/fr/errors#headershelper-not-run) par serveur sur stderr |

platforms.md +3 −3

Details

34Les intégrations permettent à Claude de travailler avec des services en dehors de votre base de code.34Les intégrations permettent à Claude de travailler avec des services en dehors de votre base de code.

35 35 

36| Intégration | Ce qu'elle fait | Utilisez-la pour |36| Intégration | Ce qu'elle fait | Utilisez-la pour |

37| :----------------------------------- | :------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |37| :----------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- |

38| [Chrome](/docs/fr/chrome) | Contrôle votre navigateur avec vos sessions connectées | Tester les applications web, remplir les formulaires, automatiser les sites sans API |38| [Chrome](/docs/fr/chrome) | Contrôle votre navigateur avec vos sessions connectées | Tester les applications web, remplir les formulaires, automatiser les sites sans API |

39| [GitHub Actions](/docs/fr/github-actions) | Exécute Claude dans votre pipeline CI | Examens automatisés des PR, triage des problèmes, maintenance programmée |39| [GitHub Actions](/docs/fr/github-actions) | Exécute Claude dans votre pipeline CI | Examens automatisés des PR, triage des problèmes, maintenance programmée |

40| [GitLab CI/CD](/docs/fr/gitlab-ci-cd) | Identique à GitHub Actions pour GitLab | Automatisation pilotée par CI sur GitLab |40| [GitLab CI/CD](/docs/fr/gitlab-ci-cd) | Identique à GitHub Actions pour GitLab | Automatisation pilotée par CI sur GitLab |

41| [Code Review](/docs/fr/code-review) | Examine automatiquement chaque PR | Détecter les bogues avant l'examen humain |41| [Code Review](/docs/fr/code-review) | Examine automatiquement chaque PR | Détecter les bogues avant l'examen humain |

42| [Slack](/docs/fr/slack) | Répond aux mentions `@Claude` dans vos canaux | Transformer les rapports de bogues en demandes de tirage à partir du chat d'équipe |42| [Slack](/docs/fr/slack) | Répond aux mentions `@Claude` dans vos canaux | Transformer les rapports de bogues en demandes de tirage à partir du chat d'équipe |

43| [Claude Tag](/docs/fr/claude-tag) | Exécute `@Claude` en tant qu'identité partagée de votre organisation avec accès configuré par l'administrateur | Accès d'équipe partagé sur les plans Team et Enterprise, au lieu de sessions Slack par utilisateur |43| [Claude Tag](https://claude.com/docs/claude-tag) | Exécute `@Claude` en tant qu'identité partagée de votre organisation avec accès configuré par l'administrateur | Accès d'équipe partagé sur les plans Team et Enterprise, au lieu de sessions Slack par utilisateur |

44 44 

45Pour les intégrations non listées ici, les [serveurs MCP](/docs/fr/mcp) et les [connecteurs](/docs/fr/desktop#connect-external-tools) vous permettent de connecter presque n'importe quoi : Linear, Notion, Google Drive ou vos propres API internes.45Pour les intégrations non listées ici, les [serveurs MCP](/docs/fr/mcp) et les [connecteurs](/docs/fr/desktop#connect-external-tools) vous permettent de connecter presque n'importe quoi : Linear, Notion, Google Drive ou vos propres API internes.

46 46 


87* [GitLab CI/CD](/docs/fr/gitlab-ci-cd) : la même chose pour GitLab87* [GitLab CI/CD](/docs/fr/gitlab-ci-cd) : la même chose pour GitLab

88* [Code Review](/docs/fr/code-review) : examen automatique à chaque demande de tirage88* [Code Review](/docs/fr/code-review) : examen automatique à chaque demande de tirage

89* [Slack](/docs/fr/slack) : envoyez des tâches à partir du chat d'équipe, récupérez les PR en retour89* [Slack](/docs/fr/slack) : envoyez des tâches à partir du chat d'équipe, récupérez les PR en retour

90* [Claude Tag](/docs/fr/claude-tag) : exécutez `@Claude` comme identité partagée de votre organisation sur les plans Team et Enterprise90* [Claude Tag](https://claude.com/docs/claude-tag) : exécutez `@Claude` comme identité partagée de votre organisation sur les plans Team et Enterprise

91 91 

92<h3 id="remote-access">92<h3 id="remote-access">

93 Accès à distance93 Accès à distance

plugin-dependencies.md +0 −267 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Contraindre les versions des dépendances de plugin

6 

7> Déclarez des contraintes de version sur les dépendances de plugin, et regroupez un ensemble de plugins organisé derrière une seule installation.

8 

9Un plugin peut dépendre d'autres plugins en les listant dans `plugin.json` ou dans son entrée marketplace. Par défaut, une dépendance suit la dernière version disponible, donc une version en amont peut modifier la dépendance sans avertissement. Les contraintes de version vous permettent de maintenir une dépendance à une plage de version testée jusqu'à ce que vous décidiez de la mettre à jour.

10 

11Lorsque vous installez un plugin qui déclare des dépendances, Claude Code les résout et les installe automatiquement, à l'exception d'une dépendance dont l'entrée marketplace a une [`command` source](/docs/fr/plugin-marketplaces#how-users-accept-the-command) ou une [`headersHelper`](/docs/fr/plugin-marketplaces#how-users-accept-a-headershelper-command), que vous installez vous-même en premier. Par la suite, `/reload-plugins`, la mise à jour automatique du marketplace du plugin dépendant, la réexécution de `claude plugin install` sur le plugin dépendant, et `claude plugin marketplace add` installent chacun toute dépendance déclarée qui n'est pas encore installée, selon les mêmes règles ; si l'une reste non résolue, consultez [Résoudre les erreurs de dépendance](#resolve-dependency-errors).

12 

13Ce guide est destiné aux auteurs de plugins qui déclarent des dépendances dans `plugin.json` et aux responsables de marketplace qui balisent les versions. Les dépendances ici sont d'autres plugins ; pour les packages npm et Bun qu'un plugin utilise lui-même, consultez [Dépendances de packages Node.js](/docs/fr/plugins-reference#node-js-package-dependencies). Pour installer des plugins qui ont des dépendances, consultez [Découvrir et installer des plugins](/docs/fr/discover-plugins). Pour le schéma de manifeste complet, consultez la [Référence des plugins](/docs/fr/plugins-reference).

14 

15<h2 id="why-constrain-dependency-versions">

16 Pourquoi contraindre les versions des dépendances

17</h2>

18 

19Considérez un marketplace interne où deux équipes publient des plugins. L'équipe plateforme maintient `secrets-vault`, un serveur MCP qui encapsule un backend de secrets. L'équipe de déploiement maintient `deploy-kit`, qui appelle `secrets-vault` pour récupérer les identifiants lors des déploiements.

20 

21`deploy-kit` est testé contre `secrets-vault` v2.1.0. Sans contrainte de version, la prochaine fois que l'équipe plateforme balisera une version qui renomme un outil MCP, la mise à jour automatique déplacera chaque `secrets-vault` de l'ingénieur vers la nouvelle version et `deploy-kit` se cassera.

22 

23Avec une contrainte de version, `deploy-kit` déclare qu'il a besoin de `secrets-vault` dans la plage `~2.1.0`. Les ingénieurs avec `deploy-kit` installé restent sur le correctif `2.1.x` le plus élevé correspondant. L'équipe de déploiement effectue la mise à niveau selon son propre calendrier en publiant une nouvelle version de `deploy-kit` avec une contrainte plus large.

24 

25<h2 id="declare-a-dependency-with-a-version-constraint">

26 Déclarer une dépendance avec une contrainte de version

27</h2>

28 

29Listez les dépendances dans le tableau `dependencies` du `plugin.json` de votre plugin.

30 

31Le manifeste suivant déclare une dépendance sans version et une dépendance contrainte :

32 

33```json .claude-plugin/plugin.json theme={null}

34{

35 "name": "deploy-kit",

36 "version": "3.1.0",

37 "dependencies": [

38 "audit-logger",

39 { "name": "secrets-vault", "version": "~2.1.0" }

40 ]

41}

42```

43 

44Une entrée peut être une simple chaîne avec uniquement le nom du plugin, comme `"audit-logger"` dans le manifeste `deploy-kit`, qui dépend de la version que le marketplace de ce plugin fournit. Pour plus de contrôle, utilisez un objet avec ces champs :

45 

46| Champ | Type | Description |

47| :------------ | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

48| `name` | string | Nom du plugin. Se résout dans le même marketplace que le plugin déclarant. Obligatoire. |

49| `version` | string | Une [plage semver](https://github.com/npm/node-semver#ranges) telle que `~2.1.0`, `^2.0`, `>=1.4`, ou `=2.1.0`. La dépendance est récupérée à la version balisée la plus élevée qui satisfait cette plage. |

50| `marketplace` | string | Un marketplace différent pour résoudre `name` dans. Les dépendances inter-marketplace sont bloquées sauf si le marketplace cible est listé dans [`allowCrossMarketplaceDependenciesOn`](#depend-on-a-plugin-from-another-marketplace) dans le `marketplace.json` du marketplace racine. |

51 

52Les versions de pré-version telles que `2.0.0-beta.1` sont exclues sauf si votre plage opte pour un suffixe de pré-version comme `^2.0.0-0`.

53 

54<h2 id="bundle-plugins-for-a-team">

55 Regrouper les plugins pour une équipe

56</h2>

57 

58En plus du `name` obligatoire, un manifeste de plugin peut se composer uniquement d'un tableau `dependencies`. Son installation récupère chaque dépendance, ce qui en fait un moyen de regrouper un ensemble de plugins curatisé derrière une seule installation.

59 

60Par exemple, une équipe de plateforme peut publier des bundles spécifiques à un rôle dans une marketplace interne afin que les ingénieurs exécutent une seule commande `claude plugin install` au lieu d'installer chaque outil séparément :

61 

62```json .claude-plugin/plugin.json theme={null}

63{

64 "name": "backend-standard",

65 "version": "1.0.0",

66 "description": "Standard plugin set for backend engineers",

67 "dependencies": [

68 "secrets-vault",

69 "deploy-kit",

70 { "name": "db-migrate", "version": "^3.0" },

71 "oncall-runbook"

72 ]

73}

74```

75 

76L'installation de `backend-standard` résout et installe les quatre dépendances.

77 

78Pour ajouter un outil à l'ensemble standard ultérieurement, publiez une nouvelle version de `backend-standard` avec la dépendance supplémentaire. À moins que la marketplace ne [mette à jour automatiquement](/docs/fr/discover-plugins#configure-auto-updates), les ingénieurs récupèrent la nouvelle version de l'une des deux façons suivantes :

79 

80* Activez la mise à jour automatique pour la marketplace dans `/plugin`. La prochaine mise à jour automatique déplace le bundle vers la nouvelle version et installe les dépendances qu'il ajoute.

81* Exécutez `claude plugin update backend-standard`, puis `/reload-plugins` pour installer les dépendances nouvellement ajoutées.

82 

83Pour déployer les bundles dans toute une organisation, ajoutez le plugin bundle à `enabledPlugins` dans les [paramètres gérés](/docs/fr/settings-reference#enabledplugins).

84 

85<h2 id="depend-on-a-plugin-from-another-marketplace">

86 Dépendre d'un plugin d'un autre marketplace

87</h2>

88 

89Par défaut, Claude Code refuse d'installer automatiquement une dépendance qui se trouve dans un marketplace différent de celui du plugin qui la déclare. Cela empêche un marketplace de silencieusement extraire des plugins d'une source que vous n'avez pas examinée.

90 

91Pour l'autoriser, le responsable du marketplace racine ajoute le nom du marketplace cible à `allowCrossMarketplaceDependenciesOn` dans `marketplace.json`. Le marketplace racine est celui qui héberge le plugin que l'utilisateur installe ; seule sa liste d'autorisation est consultée, donc la confiance ne s'enchaîne pas à travers les marketplaces intermédiaires.

92 

93Le `marketplace.json` suivant permet à `deploy-kit` de dépendre d'un plugin de `acme-shared` :

94 

95```json .claude-plugin/marketplace.json theme={null}

96{

97 "name": "acme-tools",

98 "owner": { "name": "Acme" },

99 "allowCrossMarketplaceDependenciesOn": ["acme-shared"],

100 "plugins": [

101 {

102 "name": "deploy-kit",

103 "source": "./deploy-kit",

104 "dependencies": [

105 { "name": "audit-logger", "marketplace": "acme-shared" }

106 ]

107 }

108 ]

109}

110```

111 

112Si le champ est manquant ou n'inclut pas le marketplace cible, l'installation échoue avec une erreur `cross-marketplace` nommant le champ à définir. Les utilisateurs peuvent toujours installer la dépendance manuellement en premier, ce qui satisfait la contrainte sans modifier la liste d'autorisation.

113 

114<h2 id="test-a-plugin-and-its-dependency-locally">

115 Tester un plugin et sa dépendance localement

116</h2>

117 

118Si vous développez un plugin et le plugin dont il dépend en même temps, chargez les deux avec `--plugin-dir` :

119 

120```bash theme={null}

121claude --plugin-dir ./my-dependency --plugin-dir ./my-plugin

122```

123 

124La copie locale de la dépendance satisfait l'entrée de dépendance de votre plugin, même quand l'entrée nomme une marketplace, donc vous n'avez pas besoin d'installer la dépendance depuis sa marketplace. Claude Code ne vérifie pas une [contrainte de version](#declare-a-dependency-with-a-version-constraint) par rapport à une copie locale, donc le `plugin.json` local n'a pas besoin d'une `version`. Avant la v2.1.242, une entrée de dépendance qui nommait une marketplace ne correspondait jamais à la copie locale, et Claude Code désactivait votre plugin au chargement.

125 

126Quand les deux plugins se trouvent dans un dossier parent unique, vous pouvez passer ce dossier à `--plugin-dir` une seule fois. Si le dossier n'est pas lui-même un plugin, Claude Code charge chaque dossier enfant qui a un `.claude-plugin/plugin.json`. Nécessite Claude Code v2.1.265 ou ultérieur.

127 

128Si vous n'avez pas installé la dépendance depuis sa marketplace, votre plugin arrête de se charger quand la copie locale disparaît :

129 

130* **Vous avez désactivé la copie locale** : Claude Code désactive votre plugin au prochain chargement de plugin. Pour une entrée de dépendance qui nomme une marketplace, Claude Code rapporte `Dependency "<name>@inline" is disabled — enable it or remove the dependency` ; pour une entrée de nom simple, il rapporte la dépendance par son nom simple. `<name>@inline` est comment Claude Code identifie chaque plugin `--plugin-dir` et `--plugin-url`.

131* **Vous avez démarré une session sans le drapeau `--plugin-dir` de la dépendance** : Claude Code rapporte la dépendance comme non installée. Passez le drapeau à nouveau, ou installez la dépendance depuis sa marketplace.

132 

133<h2 id="tag-plugin-releases-for-version-resolution">

134 Versions des plugins de balises pour la résolution de version

135</h2>

136 

137Claude Code résout les contraintes de version par rapport aux balises git du référentiel qui héberge la dépendance : le référentiel propre du plugin pour les [sources de plugin](/docs/fr/plugin-marketplaces#plugin-sources) `github`, `url` et `git-subdir`, ou le référentiel de la marketplace pour un plugin que la marketplace référence par un chemin relatif. Pour que Claude Code trouve les versions disponibles d'une dépendance, les versions du plugin en amont doivent être balisées en utilisant une convention de nommage spécifique.

138 

139Balisez chaque version comme `{plugin-name}--v{version}`, où `{version}` correspond au champ `version` dans le `plugin.json` de ce commit. À partir du répertoire du plugin, exécutez :

140 

141```bash theme={null}

142claude plugin tag --push

143```

144 

145La commande `claude plugin tag` dérive le nom de la balise du manifeste du plugin et de l'entrée de la marketplace qui l'entoure. Avant de créer la balise, elle valide le contenu du plugin, vérifie que `plugin.json` et l'entrée de la marketplace s'accordent sur la version, exige un arbre de travail propre sous le répertoire du plugin, et refuse si la balise existe déjà.

146 

147* `--push` pousse la balise vers la télécommande `origin`, donc le référentiel a besoin d'une télécommande `origin` configurée. Passez `--remote` pour pousser vers une autre.

148* Si la poussée échoue, la balise est toujours créée localement et la commande se termine avec une erreur.

149* Avec `--push`, une exécution réussie se termine par `Created tag secrets-vault--v2.1.0` et `Pushed to origin`, où la dernière ligne nomme la télécommande vers laquelle elle a été poussée. Sans `--push`, la commande affiche la commande `git push` à exécuter à la place.

150* `--dry-run` affiche ce qui serait balisé sans le créer.

151 

152L'exécution de `git tag secrets-vault--v2.1.0` directement est équivalente si vous gardez `plugin.json` et l'entrée de la marketplace synchronisés vous-même.

153 

154Le préfixe du nom du plugin permet à un référentiel de marketplace d'héberger plusieurs plugins avec des lignes de version indépendantes. Le séparateur `--v` est analysé comme une correspondance de préfixe sur le nom complet du plugin, donc les noms de plugin qui contiennent des traits d'union sont gérés correctement.

155 

156Lorsque vous installez un plugin qui déclare `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code répertorie les balises du référentiel qui héberge `secrets-vault`, filtre celles commençant par `secrets-vault--v`, et récupère la version la plus élevée satisfaisant `~2.1.0`. Si aucune balise du référentiel propre du plugin ne satisfait la plage, l'installation échoue avec `Dependency "secrets-vault@acme-tools" has no git tag satisfying ~2.1.0`, qui nomme la dépendance avec sa marketplace. Pour un plugin avec chemin relatif sans balise correspondante, Claude Code installe la copie actuelle de la marketplace à la place et vérifie la contrainte lors du chargement du plugin.

157 

158Pour un plugin que la marketplace référence par un chemin relatif, une marketplace ajoutée comme chemin de dossier local résout les balises de la même manière lorsque le dossier est un référentiel git. Cela nécessite Claude Code v2.1.196 ou ultérieur. Dans deux cas, Claude Code installe la dépendance à partir du contenu actuel du dossier à la place :

159 

160* Les versions antérieures ne lisent pas les balises d'une marketplace de dossier local, donc une dépendance contrainte se charge uniquement si cette copie satisfait la plage.

161* Un dossier local qui n'est pas un référentiel git n'a pas de balises, quelle que soit la version.

162 

163Le semver de la balise résolue est enregistré séparément de la `version` du `plugin.json`, donc les vérifications de contrainte utilisent la balise qui a été réellement récupérée même si la `version` du `plugin.json` à ce commit a une valeur obsolète. Le nom du répertoire de cache pour une installation résolue par balise inclut un suffixe SHA de commit de 12 caractères, donc si un responsable force-déplace une balise vers un commit différent, l'installation suivante obtient un répertoire de cache frais au lieu de réutiliser du contenu obsolète.

164 

165<Note>

166 Pour les dépendances avec une [source de plugin](/docs/fr/plugin-marketplaces#plugin-sources) `npm`, `archive` ou `command`, la contrainte ne contrôle pas quelle version est récupérée, puisque la résolution basée sur les balises s'applique uniquement aux sources sauvegardées par git. La contrainte est toujours vérifiée au moment du chargement, et le plugin dépendant est désactivé avec `dependency-version-unsatisfied` si la version installée ne la satisfait pas. Pour une source `command`, Claude Code vérifie la version dans le `plugin.json` de la dépendance et ignore le suffixe de hachage de contenu ; une dépendance dont le `plugin.json` ne définit pas de version ne satisfait aucune contrainte, donc définissez-en une avant de la contraindre.

167 

168 Claude Code n'installe jamais lui-même une dépendance avec une source `command`, donc les utilisateurs [l'installent d'abord](/docs/fr/plugin-marketplaces#how-users-accept-the-command). Claude Code n'exécute jamais non plus le `headersHelper` sur l'entrée de la marketplace d'une dépendance, donc les utilisateurs [installent d'abord ce plugin](/docs/fr/plugin-marketplaces#how-users-accept-a-headershelper-command).

169</Note>

170 

171<h2 id="how-constraints-interact">

172 Comment les contraintes interagissent

173</h2>

174 

175Lorsque plusieurs plugins installés contraignent la même dépendance, Claude Code intersecte leurs plages et résout la dépendance à la version la plus élevée qui satisfait tous les critères. Le tableau ci-dessous montre comment les combinaisons courantes se résolvent.

176 

177| Plugin A nécessite | Plugin B nécessite | Résultat |

178| :----------------- | :----------------- | :----------------------------------------------------------------------------------------------------------------------------- |

179| `^2.0` | `>=2.1` | Une installation à la balise `2.x` la plus élevée à ou au-dessus de `2.1.0`. Les deux plugins se chargent. |

180| `~2.1` | `~3.0` | L'installation du plugin B échoue avec `range-conflict`. Le plugin A et la dépendance restent comme ils étaient. |

181| `=2.1.0` | aucun | La dépendance reste à `2.1.0`. La mise à jour automatique ignore les versions plus récentes tant que le plugin A est installé. |

182 

183La mise à jour automatique récupère une dépendance contrainte à la balise git la plus élevée qui satisfait la plage de chaque plugin installé, plutôt qu'à la dernière version du marketplace, de sorte que la dépendance continue à recevoir des mises à jour dans sa plage autorisée. Si aucune balise ne satisfait toutes les plages, la mise à jour automatique ignore cette dépendance et répertorie l'ignorance dans l'onglet Erreurs de `/plugin`, en nommant le plugin contraignant.

184 

185Lorsque vous désinstallez le dernier plugin qui contraint une dépendance, la dépendance n'est plus maintenue et reprend le suivi de son entrée marketplace lors de la prochaine mise à jour.

186 

187<h2 id="enable-or-disable-a-plugin-with-dependencies">

188 Activer ou désactiver un plugin avec des dépendances

189</h2>

190 

191Cette section couvre les plugins installés à partir d'une marketplace. Pour une copie que vous avez chargée avec `--plugin-dir`, voir [Tester un plugin et sa dépendance localement](#test-a-plugin-and-its-dependency-locally).

192 

193L'activation d'un plugin active également les plugins dont il dépend, et la désactivation d'un plugin est bloquée si un autre plugin activé en a toujours besoin.

194 

195Lorsque vous activez un plugin, Claude Code active également ses dépendances au même scope. Si une dépendance a ses propres dépendances, Claude Code les active également. Le message de succès liste ce qui d'autre a été activé avec le plugin que vous avez nommé. Si une dépendance ne peut pas être activée, la commande refuse et vous dit ce qui bloque et comment corriger :

196 

197| Condition | Résultat |

198| :------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- |

199| Une dépendance n'est pas installée | L'activation échoue et affiche la commande `claude plugin install` pour chaque dépendance manquante. |

200| Une dépendance est bloquée par la politique de plugin de votre organisation | L'activation échoue et nomme la dépendance bloquée. |

201| Une dépendance est définie sur `false` à un scope avec une priorité plus élevée que le scope cible | L'activation échoue. Activez la dépendance à ce scope, ou passez `--scope` pour écrire là. |

202| Toutes les dépendances sont installées et autorisées | L'activation réussit et écrit `true` pour le plugin et chaque dépendance qui n'était pas déjà activée au scope cible. |

203 

204Ceci s'applique même lorsqu'une dépendance définit [`defaultEnabled: false`](/docs/fr/plugins-reference#default-enablement) dans son manifeste, car Claude Code écrit un `true` explicite pour celle-ci. La même chose s'applique à l'installation : une dépendance extraite pour satisfaire un plugin actif s'installe avec `true` indépendamment de sa propre valeur par défaut.

205 

206Lorsque vous désactivez un plugin, Claude Code refuse si un autre plugin activé en dépend toujours. L'erreur nomme les plugins qui en dépendent et vous donne une commande chaînée qui les désactive dans le bon ordre, se terminant par celui que vous avez demandé.

207 

208Par exemple, si `deploy-kit` dépend de `secrets-vault`, la désactivation de `secrets-vault` seule échoue avec une sortie similaire à ce qui suit :

209 

210```text theme={null}

211secrets-vault is still required by deploy-kit. Disable that plugin first, or

212disable everything together: claude plugin disable deploy-kit@acme-tools && claude plugin disable secrets-vault@acme-tools

213```

214 

215Copiez la commande chaînée de l'erreur pour désactiver l'ensemble complet en une seule étape.

216 

217<h2 id="remove-orphaned-auto-installed-dependencies">

218 Supprimer les dépendances auto-installées orphelines

219</h2>

220 

221Les dépendances auto-installées restent sur le disque après la désinstallation des plugins qui les ont installées, au cas où vous réinstalliez un plugin dépendant ou souhaiteriez continuer à utiliser la dépendance directement. Pour les nettoyer, exécutez `claude plugin prune` pour lister les dépendances auto-installées qui n'ont plus aucun plugin installé les exigeant et les supprimer après une invite de confirmation.

222 

223```bash theme={null}

224claude plugin prune

225```

226 

227Si rien ne se qualifie pour la suppression, la commande affiche `Nothing to prune` avec la raison et se termine. C'est le résultat attendu sur une installation récente, pas une erreur.

228 

229Par défaut, prune fonctionne à la portée utilisateur et demande une confirmation avant de supprimer quoi que ce soit :

230 

231* `--scope project` ou `--scope local` cible une portée différente.

232* `--dry-run` liste ce qui serait supprimé sans rien modifier.

233* `-y` ignore l'invite de confirmation. Lorsque stdin ou stdout n'est pas un terminal, prune liste les orphelins et se termine sans les supprimer sauf si vous passez `-y`.

234 

235Pour nettoyer dans le cadre d'une désinstallation, passez `--prune` à `claude plugin uninstall`. Après suppression du plugin nommé, Claude Code analyse et supprime toute dépendance auto-installée qui est maintenant orpheline. Les plugins que vous avez installés vous-même ne sont jamais nettoyés, uniquement ceux installés automatiquement via le tableau `dependencies` d'un autre plugin.

236 

237Le même comportement de confirmation s'applique. Lorsque stdin ou stdout n'est pas un terminal, la désinstallation se termine quand même, mais l'étape prune liste les orphelins et ne supprime rien sauf si vous passez `-y`.

238 

239Par exemple, pour désinstaller `deploy-kit` et nettoyer les dépendances qu'il laisse derrière :

240 

241```bash theme={null}

242claude plugin uninstall deploy-kit --prune

243```

244 

245<h2 id="resolve-dependency-errors">

246 Résoudre les erreurs de dépendance

247</h2>

248 

249Les problèmes de dépendance apparaissent dans `claude plugin list` et dans l'interface `/plugin`, sous forme de messages d'erreur descriptifs plutôt que les codes littéraux de ce tableau. Claude Code désactive le plugin affecté jusqu'à ce que vous résolviez l'erreur. Le tableau ci-dessous liste les erreurs les plus courantes et comment les résoudre.

250 

251| Erreur | Signification | Comment résoudre |

252| :------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

253| `dependency-unsatisfied` | Une dépendance déclarée n'est pas installée, ou elle est installée mais désactivée. | Exécutez la commande `claude plugin install` affichée dans le message d'erreur. Si la marketplace de la dépendance n'est pas encore configurée, ajoutez-la avec `claude plugin marketplace add` et Claude Code résout la dépendance automatiquement. Si la dépendance est désactivée, activez-la. |

254| `range-conflict` | Les exigences de version pour une dépendance ne peuvent pas être combinées. Le message d'erreur nomme la cause : aucune version ne satisfait toutes les plages, une plage n'est pas une syntaxe semver valide, ou les plages combinées sont trop complexes à intersectionner. | Désinstallez ou mettez à jour l'un des plugins en conflit, corrigez toute chaîne `version` invalide, simplifiez les longues chaînes `\|\|`, ou demandez à l'auteur en amont d'élargir sa contrainte. |

255| `dependency-version-unsatisfied` | La version de la dépendance installée est en dehors de la plage déclarée de ce plugin. | Exécutez `claude plugin install <dependency>@<marketplace>` pour re-résoudre la dépendance par rapport à toutes les contraintes actuelles. |

256| `no-matching-tag` | Le référentiel de la dépendance n'a pas de balise `{name}--v*` satisfaisant la plage. | Vérifiez que l'amont a balisé les versions en utilisant la convention ci-dessus, ou assouplissez votre plage. |

257 

258Pour vérifier ces erreurs par programmation, exécutez `claude plugin list --json`. Les plugins avec des problèmes incluent un champ `errors` les listant. Les plugins qui se sont chargés correctement omettent le champ.

259 

260<h2 id="see-also">

261 Voir aussi

262</h2>

263 

264* [Créer des plugins](/docs/fr/plugins) : créez des plugins avec des skills, des agents et des hooks

265* [Créer et distribuer un marketplace de plugins](/docs/fr/plugin-marketplaces) : hébergez des plugins pour votre équipe

266* [Référence des plugins](/docs/fr/plugins-reference#plugin-manifest-schema) : le schéma complet de `plugin.json`

267* [Gestion des versions](/docs/fr/plugins-reference#version-management) : comment la version propre d'un plugin est résolue et utilisée comme clé de cache

plugin-evals.md +96 −37

Details

6 6 

7> Écrivez des cas d'eval pour votre plugin Claude Code, exécutez-les avec claude plugin eval, notez les résultats, comparez-les avec une base de référence sans plugin et contrôlez CI sur le score.7> Écrivez des cas d'eval pour votre plugin Claude Code, exécutez-les avec claude plugin eval, notez les résultats, comparez-les avec une base de référence sans plugin et contrôlez CI sur le score.

8 8 

9`claude plugin eval` exécute votre [plugin](/docs/fr/plugins) par rapport à une suite de cas de test et note les résultats. Chaque cas est une invite réaliste plus un ou plusieurs évaluateurs. Un évaluateur est une vérification réussi/échoué sur ce que Claude a produit, comme une regex sur la réponse, si un outil particulier a été appelé, ou une rubrique qu'un deuxième modèle juge sur la réponse.9La commande shell `claude plugin eval` exécute votre [plugin](/docs/fr/plugins/overview) par rapport à une suite de cas de test et note les résultats. Chaque cas est une invite réaliste plus un ou plusieurs évaluateurs. Un évaluateur est une vérification réussi/échoué sur ce que Claude a produit, comme une regex sur la réponse, si un outil particulier a été appelé, ou une rubrique qu'un deuxième modèle juge sur la réponse.

10 10 

11Vous n'avez pas à écrire la suite à la main ; `claude plugin eval init` vous pose des questions sur votre plugin, propose les cas et les évaluateurs, les essaie, et écrit les fichiers. Vous pouvez aussi demander à Claude de faire la même chose à partir d'une session que vous avez déjà ouverte.11Vous n'avez pas à écrire la suite à la main ; `claude plugin eval init` vous pose des questions sur votre plugin, propose les cas et les évaluateurs, les essaie, et écrit les fichiers. Vous pouvez aussi demander à Claude de faire la même chose à partir d'une session que vous avez déjà ouverte.

12 12 

13Utilisez les evals pour mesurer la fiabilité avec laquelle votre plugin oriente Claude vers le bon résultat, pour détecter les régressions lorsque vous modifiez le plugin ou qu'un nouveau modèle est lancé, et pour voir ce que le plugin contribue par rapport à aucun plugin du tout.13Utilisez les evals pour :

14 14 

15Cette page est destinée aux auteurs de plugins et de skills qui ont un plugin fonctionnel et qui veulent tester son comportement, et aux équipes qui contrôlent les modifications de plugins dans CI. Son format de cas est séparé du fichier `evals/evals.json` que le [plugin skill-creator](/docs/fr/skills#run-evals-with-skill-creator) utilise. Pour créer un plugin, voir [Créer des plugins](/docs/fr/plugins) ; pour vérifier les fichiers d'un plugin pour les erreurs de syntaxe et de schéma plutôt que son comportement, utilisez [`claude plugin validate`](/docs/fr/plugins-reference#plugin-validate).15* Mesurer la fiabilité avec laquelle votre plugin oriente Claude vers le bon résultat

16* Détecter les régressions lorsque vous modifiez le plugin ou qu'un nouveau modèle est lancé

17* Voir ce que le plugin contribue par rapport à aucun plugin

18 

19Cette page est destinée aux auteurs de plugins et de skills qui ont un plugin fonctionnel et qui veulent tester son comportement, et aux équipes qui contrôlent les modifications de plugins dans CI. Son format de cas est séparé du fichier `evals/evals.json` que le [plugin skill-creator](/docs/fr/skills#run-evals-with-skill-creator) utilise. Pour créer un plugin, voir [Créer un plugin](/docs/fr/plugins/create) ; pour vérifier les fichiers d'un plugin pour les erreurs de syntaxe et de schéma plutôt que son comportement, utilisez [`claude plugin validate`](/docs/fr/plugins/cli-reference#plugin-validate).

16 20 

17<Note>21<Note>

18 Chaque exécution d'eval et chaque évaluateur de juge est un vrai appel de modèle sur votre compte, compté par rapport à l'utilisation de votre plan ou votre facture API, alors vérifiez d'abord les [exigences](#requirements). Ensuite [créez votre première suite d'eval](#create-your-first-eval-suite), ou allez à [Exécuter les evals dans CI](#run-evals-in-ci) si vous en avez déjà une.22 Chaque exécution d'eval et chaque évaluateur de juge est un vrai appel de modèle sur votre compte, compté par rapport à l'utilisation de votre plan ou votre facture API, alors vérifiez d'abord les [exigences](#requirements). Ensuite [créez votre première suite d'eval](#create-your-first-eval-suite), ou allez à [Exécuter les evals dans CI](#run-evals-in-ci) si vous en avez déjà une.


25Pour exécuter les evals de plugin, vous avez besoin de :29Pour exécuter les evals de plugin, vous avez besoin de :

26 30 

27* Claude Code v2.1.269 ou ultérieur. Exécutez `claude --version` pour vérifier et `claude update` pour mettre à jour.31* Claude Code v2.1.269 ou ultérieur. Exécutez `claude --version` pour vérifier et `claude update` pour mettre à jour.

28* Un répertoire de plugin avec un manifeste `plugin.json` ou `.claude-plugin/plugin.json`, ou un [plugin de répertoire de skills](/docs/fr/plugins-reference#skills-directory-plugins).32* Un répertoire de plugin avec un manifeste `plugin.json` ou `.claude-plugin/plugin.json`, ou un [plugin de répertoire de skills](/docs/fr/plugins/loading#plugins-shared-through-a-repository).

29* La même authentification et le même fournisseur de modèle que vos sessions Claude Code normales. Les exécutions d'eval, les évaluateurs notés par le juge, et `claude plugin eval init` appellent le modèle avec vos identifiants, donc ils comptent par rapport à vos limites d'utilisation du plan ou votre facture API. Lorsque la commande rapporte un coût, le chiffre est une [estimation du prix catalogue](/docs/fr/costs) de ces appels.33* La même authentification et le même fournisseur de modèle que vos sessions Claude Code normales. Les exécutions d'eval, les évaluateurs notés par le juge, et `claude plugin eval init` appellent le modèle avec vos identifiants, donc ils comptent par rapport à vos limites d'utilisation du plan ou votre facture API. Lorsque la commande rapporte un coût, le chiffre est une [estimation du prix catalogue](/docs/fr/costs) de ces appels.

30 34 

31<h2 id="how-an-eval-run-works">35<h2 id="how-an-eval-run-works">


44 Comment un cas est noté48 Comment un cas est noté

45</h3>49</h3>

46 50 

47Une exécution d'un agent non-déterministe vous dit peu de choses, donc chaque cas s'exécute trois fois par défaut. Le score d'une exécution est la fraction de ses évaluateurs qui ont réussi, pondérée si vous définissez des poids, et le score du cas est la moyenne sur ses exécutions. Un cas réussit lorsque son score atteint le [`--threshold`](#command-options), `1.0` par défaut. Dans les appels de modèle, une suite fait environ cas × exécutions appels d'agent avec le plugin et autant à nouveau pour la [base de référence sans plugin](#the-no-plugin-baseline), plus trois appels de juge courts par évaluateur `llm` ou `baseline` par exécution.51Une exécution d'un agent non-déterministe vous dit peu de choses, donc chaque cas s'exécute trois fois par défaut. Le score d'une exécution est la fraction de ses évaluateurs qui ont réussi, pondérée si vous définissez des poids, et le score du cas est la moyenne sur ses exécutions. Un cas réussit lorsque son score atteint le [`--threshold`](#command-options), `1.0` par défaut.

52 

53Dans les appels de modèle, une suite fait environ cas × exécutions appels d'agent avec le plugin et autant à nouveau pour la [base de référence sans plugin](#the-no-plugin-baseline), plus trois appels de juge courts par évaluateur `llm` ou `baseline` par exécution.

48 54 

49<h3 id="the-no-plugin-baseline">55<h3 id="the-no-plugin-baseline">

50 La base de référence sans plugin56 La base de référence sans plugin

51</h3>57</h3>

52 58 

53Un score élevé en soi ne vous dit pas si le plugin a aidé, car Claude pourrait faire aussi bien sans lui. Pour séparer les deux, les exécutions de chaque cas sont répétées sans plugin chargé par défaut, et vous obtenez deux scores, `WITH` et `W/OUT`. Leur différence, `Δ`, est ce que le plugin a contribué. Si un cas marque 1.0 à la fois avec et sans le plugin, le plugin n'est pas ce qui l'a fait réussir. Les deux ensembles d'exécutions sont appelés le bras with et le bras without ; [Comparer avec une base de référence sans plugin](#compare-against-a-no-plugin-baseline) couvre comment les évaluateurs sont notés sur les deux bras et comment désactiver la base de référence.59Un score élevé en soi ne vous dit pas si le plugin a aidé, car Claude pourrait faire aussi bien sans lui. Pour séparer les deux, les exécutions de chaque cas sont répétées sans plugin chargé par défaut, et vous obtenez deux scores, `WITH` et `W/OUT`. Leur différence, `Δ`, est ce que le plugin a contribué. Si un cas marque 1.0 à la fois avec et sans le plugin, le plugin n'est pas ce qui l'a fait réussir.

60 

61Les deux ensembles d'exécutions sont appelés le bras with et le bras without ; [Comparer avec une base de référence sans plugin](#compare-against-a-no-plugin-baseline) couvre comment les évaluateurs sont notés sur les deux bras et comment désactiver la base de référence.

54 62 

55<h2 id="create-your-first-eval-suite">63<h2 id="create-your-first-eval-suite">

56 Créez votre première suite d'eval64 Créez votre première suite d'eval


70 claude plugin eval init78 claude plugin eval init

71 ```79 ```

72 80 

73 Si Claude Code ne fait pas déjà confiance à ce répertoire, il demande d'abord `Trust this plugin directory?` ; répondez `y`. Une session Claude Code interactive s'ouvre ensuite. Claude lit votre plugin et vous demande à quoi ressemble un bon résultat, propose des invites qui devraient et ne devraient pas déclencher le plugin, conçoit des évaluateurs pour chacun, les teste une fois pour vérifier qu'ils se comportent, et écrit un répertoire de cas par invite sous `evals/`, chacun nommé d'après son invite. Lorsque Claude vous dit que la suite est prête, quittez cette session avec `/exit` ou Ctrl+D pour revenir à votre shell.81 Si Claude Code ne fait pas déjà confiance à ce répertoire, il demande d'abord `Trust this plugin directory?` ; répondez `y`.

82 

83 Une session Claude Code interactive s'ouvre ensuite. Claude lit votre plugin et vous demande à quoi ressemble un bon résultat, propose des invites qui devraient et ne devraient pas déclencher le plugin, conçoit des évaluateurs pour chacun, les teste une fois pour vérifier qu'ils se comportent, et écrit un répertoire de cas par invite sous `evals/`, chacun nommé d'après son invite.

84 

85 Lorsque Claude vous dit que la suite est prête, quittez cette session avec `/exit` ou Ctrl+D pour revenir à votre shell.

74 86 

75 Si vous avez déjà une session Claude Code ouverte à la racine du plugin, vous pouvez plutôt demander à Claude d'exécuter `claude plugin eval init`. Claude exécute la commande et vous pose ensuite les mêmes questions dans cette conversation.87 Si vous avez déjà une session Claude Code ouverte à la racine du plugin, vous pouvez plutôt demander à Claude d'exécuter `claude plugin eval init`. Claude exécute la commande et vous pose ensuite les mêmes questions dans cette conversation.

76 88 


171Write me a commit message for this change: I renamed getUser to fetchUser and updated the three call sites.183Write me a commit message for this change: I renamed getUser to fetchUser and updated the three call sites.

172```184```

173 185 

174Chaque exécution commence dans un répertoire de travail vide, donc mettez tout ce dont la tâche a besoin dans l'invite elle-même, ou [configurez l'espace de travail](#add-setup-or-history-with-case-yaml) d'abord. La [liste complète des champs frontmatter](#prompt-md-fields) couvre le modèle, le délai d'expiration, les balises et les variables d'environnement.186Chaque exécution commence dans un répertoire de travail vide, donc mettez tout ce dont la tâche a besoin dans l'invite elle-même, ou [configurez l'espace de travail](#add-setup-or-history-with-case-yaml) d'abord.

187 

188Le [liste complète des champs frontmatter](#prompt-md-fields) couvre le modèle, le délai d'expiration, les balises et les variables d'environnement.

175 189 

176Chaque fichier sous `graders/` est une vérification appliquée après l'exécution. Ouvrez `evals/first-case/graders/criteria.md` et remplacez l'espace réservé par une rubrique pour le modèle juge, écrite comme des conditions PASS et FAIL concrètes :190Chaque fichier sous `graders/` est une vérification appliquée après l'exécution. Ouvrez `evals/first-case/graders/criteria.md` et remplacez l'espace réservé par une rubrique pour le modèle juge, écrite comme des conditions PASS et FAIL concrètes :

177 191 


184FAIL if <what a wrong or missing response looks like>.198FAIL if <what a wrong or missing response looks like>.

185```199```

186 200 

187Ensuite, ajoutez un deuxième évaluateur qui vérifie si votre skill est ce qui a produit la réponse. Créez `evals/first-case/graders/skill-fired.md`, en remplaçant `your-skill-name` par le `name` du `SKILL.md` de votre skill :201Ensuite, ajoutez un deuxième évaluateur qui vérifie si votre skill est ce qui a produit la réponse. Créez `evals/first-case/graders/skill-fired.md`, en remplaçant `your-skill-name` par le nom du répertoire de votre skill sous `skills/`, qui est le nom que Claude invoque :

188 202 

189```markdown theme={null}203```markdown theme={null}

190---204---


194---208---

195```209```

196 210 

197Cela réussit lorsque Claude a invoqué cette skill au moins une fois pendant l'exécution, y compris par sa forme `plugin-name:skill-name` avec espace de noms. [Types d'évaluateurs](#grader-types) énumère les autres vérifications disponibles, comme la correspondance d'une regex ou la confirmation qu'un fichier a été créé.211Cela réussit lorsque Claude a invoqué cette skill au moins une fois pendant l'exécution, y compris par sa forme `plugin-name:skill-name` avec espace de noms.

212 

213[Types d'évaluateurs](#grader-types) énumère les autres vérifications disponibles, comme la correspondance d'une regex ou la confirmation qu'un fichier a été créé.

198 214 

199Avec les deux fichiers enregistrés, exécutez le cas de la manière que le [démarrage rapide](#create-your-first-eval-suite) le fait, avec `claude plugin eval .` à partir de la racine du plugin.215Avec les deux fichiers enregistrés, exécutez le cas de la manière que le [démarrage rapide](#create-your-first-eval-suite) le fait, avec `claude plugin eval .` à partir de la racine du plugin.

200 216 


202 Définir les limites d'exécution et les outils dans prompt.md218 Définir les limites d'exécution et les outils dans prompt.md

203</h3>219</h3>

204 220 

205Définissez `max_turns`, `timeout_seconds`, `model`, `tags` d'un cas, et les `allowed_tools` qu'il peut utiliser dans le frontmatter de `prompt.md` ; la référence [frontmatter de prompt.md](#prompt-md-fields) énumère chaque champ et sa valeur par défaut. Claude reçoit le corps exactement comme vous l'avez écrit. Les mentions `@path` dedans ne sont pas développées en pièces jointes de fichier, donc si Claude a besoin de lire un fichier, accordez un outil pour cela dans `allowed_tools`.221Définissez `max_turns`, `timeout_seconds`, `model`, `tags` d'un cas, et les `allowed_tools` qu'il peut utiliser dans le frontmatter de `prompt.md` ; la référence [frontmatter de prompt.md](#prompt-md-fields) énumère chaque champ et sa valeur par défaut.

222 

223Claude reçoit le corps exactement comme vous l'avez écrit. Les mentions `@path` dedans ne sont pas développées en pièces jointes de fichier, donc si Claude a besoin de lire un fichier, accordez un outil pour cela dans `allowed_tools`.

206 224 

207<h3 id="grade-the-result">225<h3 id="grade-the-result">

208 Choisir et pondérer les évaluateurs226 Choisir et pondérer les évaluateurs


210 228 

211Le frontmatter d'un évaluateur définit son `type`, et optionnellement un `weight` qui le fait compter pour plus du score de l'exécution et un [`arm`](#compare-against-a-no-plugin-baseline) qui contrôle comment il est noté par rapport à la base de référence. Des six types, `regex`, `tool_used`, `tool_order`, et `file_exists` sont calculés à partir de la transcription et des fichiers et ne coûtent rien, tandis que `llm` et `baseline` appellent un modèle juge et s'ajoutent au coût de l'exécution.229Le frontmatter d'un évaluateur définit son `type`, et optionnellement un `weight` qui le fait compter pour plus du score de l'exécution et un [`arm`](#compare-against-a-no-plugin-baseline) qui contrôle comment il est noté par rapport à la base de référence. Des six types, `regex`, `tool_used`, `tool_order`, et `file_exists` sont calculés à partir de la transcription et des fichiers et ne coûtent rien, tandis que `llm` et `baseline` appellent un modèle juge et s'ajoutent au coût de l'exécution.

212 230 

213Il n'y a pas d'évaluateurs de code personnalisé. [Types d'évaluateurs](#grader-types) énumère les options de chaque type et la condition de réussite, et [ce qu'un évaluateur peut regarder](#what-a-grader-can-look-at) énumère les valeurs que `target` et `focus` acceptent.231Il n'y a pas d'évaluateurs de code personnalisé.

232 

233[Types d'évaluateurs](#grader-types) énumère les options de chaque type et la condition de réussite, et [ce qu'un évaluateur peut regarder](#what-a-grader-can-look-at) énumère les valeurs que `target` et `focus` acceptent.

214 234 

215Le juge pour les évaluateurs `llm` et `baseline` est un petit modèle rapide par défaut. Passez `--judge-model sonnet` ou un ID de modèle complet pour en utiliser un plus fort pour les rubriques nuancées.235Le juge pour les évaluateurs `llm` et `baseline` est un petit modèle rapide par défaut. Passez `--judge-model sonnet` ou un ID de modèle complet pour en utiliser un plus fort pour les rubriques nuancées.

216 236 


229 Noter par rapport à la base de référence sans plugin249 Noter par rapport à la base de référence sans plugin

230</h3>250</h3>

231 251 

232Lorsqu'un plugin est en test, chaque cas s'exécute dans deux bras par défaut. Le bras with est ses exécutions avec le plugin chargé, et le bras without est le même nombre d'exécutions sans aucun plugin. Le résumé et le rapport affichent les deux scores et `Δ`, le score du bras with moins le score du bras without. Passez `--ablation none` pour exécuter seulement le bras with, ce qui réduit de moitié le coût lorsque vous n'avez pas besoin de la comparaison, comme lors de l'itération sur les évaluateurs.252Lorsqu'un plugin est en test, chaque cas s'exécute dans deux bras par défaut. Le bras with est ses exécutions avec le plugin chargé, et le bras without est le même nombre d'exécutions sans aucun plugin. Le résumé et le rapport affichent les deux scores et `Δ`, le score du bras with moins le score du bras without.

253 

254Passez `--ablation none` pour exécuter seulement le bras with, ce qui réduit de moitié le coût lorsque vous n'avez pas besoin de la comparaison, comme lors de l'itération sur les évaluateurs.

233 255 

234Dans une exécution à deux bras, certains évaluateurs sont rapportés avec `scored: false`. Une vérification comme « la skill a été invoquée » ne peut jamais réussir sans le plugin, donc la compter pousserait le bras without vers zéro et gonflerait `Δ`. Pour garder les deux bras comparables, Claude Code exclut ces évaluateurs du score dans les deux bras et les rapporte dans le bras with comme des indicateurs réussi/échoué uniquement. Cela inclut :256Dans une exécution à deux bras, certains évaluateurs sont rapportés avec `scored: false`. Une vérification comme « la skill a été invoquée » ne peut jamais réussir sans le plugin, donc la compter pousserait le bras without vers zéro et gonflerait `Δ`. Pour garder les deux bras comparables, Claude Code exclut ces évaluateurs du score dans les deux bras et les rapporte dans le bras with comme des indicateurs réussi/échoué uniquement. Cela inclut :

235 257 

236* Chaque évaluateur `tool_used` dont `tool` est `Skill`258* Chaque évaluateur `tool_used` dont `tool` est `Skill`

259* Chaque évaluateur `regex` avec `target: mock_calls` et chaque évaluateur `llm` avec `focus: mock_calls`, lorsque chaque [serveur mocké](#mock-mcp-servers) dans le cas en est un que votre plugin déclare

237* Tout évaluateur que vous marquez `arm: with-only`260* Tout évaluateur que vous marquez `arm: with-only`

238 261 

239Si chaque évaluateur dans un cas en est un, ils sont notés normalement à la place, puisqu'il n'y aurait rien d'autre à noter. Définissez `arm: both` sur un évaluateur pour le noter dans les deux bras indépendamment, ce que vous voulez pour une vérification « ne doit pas invoquer la skill » avec `min: 0` et `max: 0`. Sous `--ablation none`, rien n'est exclu, donc la même suite peut produire un score absolu différent dans les deux modes.262Trois paramètres changent cette exclusion :

263 

264* **Chaque évaluateur exclu** : si chaque évaluateur dans un cas en est un, ils sont notés normalement à la place, puisqu'il n'y aurait rien d'autre à noter.

265* **`arm: both`** : définissez `arm: both` sur un évaluateur pour le noter dans les deux bras indépendamment, ce que vous voulez pour une vérification « ne doit pas invoquer la skill » avec `min: 0` et `max: 0`.

266* **`--ablation none`** : sous `--ablation none`, rien n'est exclu, donc la même suite peut produire un score absolu différent dans les deux modes.

240 267 

241<h3 id="use-a-different-eval-directory">268<h3 id="use-a-different-eval-directory">

242 Utiliser un répertoire d'eval différent269 Utiliser un répertoire d'eval différent


259 Ensemencer l'espace de travail ou la conversation286 Ensemencer l'espace de travail ou la conversation

260</h3>287</h3>

261 288 

262Chaque exécution commence dans un espace de travail vide. Lorsqu'un cas a besoin de plus que l'invite, ajoutez un `case.yaml` à côté de `prompt.md` avec un bloc `context`.289Chaque exécution commence dans un espace de travail vide. Lorsqu'un cas a besoin de plus que l'invite, ajoutez un `case.yaml` à côté de `prompt.md` avec un bloc `context` :

263 290 

264Pour créer d'abord des fichiers de fixture ou un référentiel git, écrivez un script Bash dans le répertoire de cas et nommez-le dans `context.scaffold_script`. Le script s'exécute en tant que vous, en dehors du sandbox de l'agent, et seulement lorsque vous passez `--scaffold`, donc passez ce drapeau seulement pour les suites que vous ou votre organisation avez écrites. Pour continuer une conversation antérieure, enregistrez la transcription en tant que fichier `.jsonl` et nommez-la dans `context.history_file`, et l'invite du cas devient le prochain tour utilisateur. Pour laisser Claude lire les répertoires de fixture pendant l'exécution, énumérez-les dans `context.add_dirs`.291* **Fichiers de fixture ou un référentiel git** : écrivez un script Bash dans le répertoire de cas et nommez-le dans `context.scaffold_script`. Le script s'exécute en tant que vous, en dehors du sandbox de l'agent, et seulement lorsque vous passez `--scaffold`, donc passez ce drapeau seulement pour les suites que vous ou votre organisation avez écrites.

292* **Une conversation antérieure à continuer** : enregistrez la transcription en tant que fichier `.jsonl` et nommez-la dans `context.history_file`, et l'invite du cas devient le prochain tour utilisateur.

293* **Répertoires de fixture que Claude peut lire pendant l'exécution** : énumérez-les dans `context.add_dirs`.

265 294 

266Un `case.yaml` a également besoin de `schema_version: "1.1"` et `name` ; la référence [champs case.yaml](#case-yaml-fields) a la liste complète.295Un `case.yaml` a également besoin de `schema_version: "1.1"` et `name` ; la référence [champs case.yaml](#case-yaml-fields) a la liste complète.

267 296 


280 Serveurs MCP fictifs309 Serveurs MCP fictifs

281</h3>310</h3>

282 311 

283Vous pouvez évaluer un plugin dont les skills appellent des outils MCP sans le vrai service derrière eux. Mettez un fichier Markdown par outil sous `evals/mocks/<server>/<tool>.md` pour la suite entière, ou sous le répertoire `mocks/` propre d'un cas pour un cas, où `<server>` est le nom du serveur dans la [configuration MCP](/docs/fr/plugins-reference#mcp-servers) de votre plugin.312Vous pouvez évaluer un plugin dont les skills appellent des outils MCP sans le vrai service derrière eux. Mettez un fichier Markdown par outil sous `evals/mocks/<server>/<tool>.md` pour la suite entière, ou sous le répertoire `mocks/` propre d'un cas pour un cas, où `<server>` est le nom du serveur dans la [configuration MCP](/docs/fr/plugins/components#mcp-servers) de votre plugin.

284 313 

285Une exécution ne démarre jamais les vrais serveurs MCP de votre plugin à moins que vous le demandiez. Claude Code enregistre un remplaçant sous le nom propre de chaque serveur. Les outils avec un fichier mock répondent à partir de celui-ci et sont autorisés sans une concession `--allow-tools`, et un outil sans fichier mock n'est pas disponible pour Claude. Un serveur sans aucun mock du tout apparaît dans la ligne de progression `mocked:` du cas comme `plugin_<plugin>_<server>[not started: no mock]`.314Une exécution ne démarre jamais les vrais serveurs MCP de votre plugin à moins que vous le demandiez. Claude Code enregistre un serveur de substitution sous le nom propre de chaque serveur. Les outils avec un fichier mock répondent à partir de celui-ci et sont autorisés sans une concession `--allow-tools`, et un outil sans fichier mock n'est pas disponible pour Claude. Un serveur sans aucun mock du tout apparaît dans la ligne de progression `mocked:` du cas comme `plugin_<plugin>_<server>[not started: no mock]`.

286 315 

287Le corps du fichier est ce que l'outil retourne à Claude. Ce mock se substitue à un outil `create_issue` sur un serveur nommé `tracker`, vérifie l'entrée que Claude envoie, et renvoie le titre. Enregistrez-le en tant que `evals/mocks/tracker/create_issue.md` :316Le corps du fichier est ce que l'outil retourne à Claude. Ce mock se substitue à un outil `create_issue` sur un serveur nommé `tracker`, vérifie l'entrée que Claude envoie, et renvoie le titre. Enregistrez-le en tant que `evals/mocks/tracker/create_issue.md` :

288 317 


296Created issue #4821: {{input.title}}325Created issue #4821: {{input.title}}

297```326```

298 327 

299Insérez les champs de l'entrée de l'appel avec `{{input.<field>}}`, et le contenu d'un fichier de fixture à côté du mock avec `{{file:fixtures/{input.<field>}.json}}`. Le bloc `expect:` protège l'entrée. Si un appel le viole, l'exécution s'arrête avec un score de 0 et enregistre pourquoi, donc un cas peut affirmer ce que votre plugin a demandé au serveur de faire. Définissez `error: true` pour retourner le corps comme une erreur d'outil à la place, ou `type: agent` pour avoir un petit modèle répondre en tant que serveur à partir d'instructions dans le corps. La [référence du fichier mock](#mock-files) énumère chaque clé et les fichiers `_server.md` et `_tools.json`.328Le corps et le frontmatter d'un fichier mock acceptent ces options :

329 

330* **Substitutions** : insérez les champs de l'entrée de l'appel avec `{{input.<field>}}`, et le contenu d'un fichier de fixture à côté du mock avec `{{file:fixtures/{input.<field>}.json}}`.

331* **`expect:`** : le bloc `expect:` protège l'entrée. Si un appel le viole, l'exécution s'arrête avec un score de 0 et enregistre pourquoi, donc un cas peut affirmer ce que votre plugin a demandé au serveur de faire.

332* **`error: true`** : définissez `error: true` pour retourner le corps comme une erreur d'outil à la place.

333* **`type: agent`** : définissez `type: agent` pour avoir un petit modèle répondre en tant que serveur à partir d'instructions dans le corps.

334 

335La [référence du fichier mock](#mock-files) énumère chaque clé et les fichiers `_server.md` et `_tools.json`.

300 336 

301Pour noter les appels eux-mêmes, pointez un évaluateur vers `target: mock_calls`.337Pour noter les appels eux-mêmes, pointez un évaluateur vers `target: mock_calls`.

302 338 


330| Le répertoire racine d'un plugin, comme `.` | Chaque cas sous son répertoire d'eval, avec ce plugin chargé |366| Le répertoire racine d'un plugin, comme `.` | Chaque cas sous son répertoire d'eval, avec ce plugin chargé |

331| Un fichier `prompt.md` ou `case.yaml` unique | Ce cas, avec son plugin englobant chargé |367| Un fichier `prompt.md` ou `case.yaml` unique | Ce cas, avec son plugin englobant chargé |

332| Un plugin installé par nom, `name` ou `name@marketplace` | Les cas dans le répertoire d'eval de la copie installée, avec la copie installée chargée. Les résultats sont écrits sous `./evals/results/` dans votre répertoire courant, ou `./<dir>/results/` avec `--eval-dir` |368| Un plugin installé par nom, `name` ou `name@marketplace` | Les cas dans le répertoire d'eval de la copie installée, avec la copie installée chargée. Les résultats sont écrits sous `./evals/results/` dans votre répertoire courant, ou `./<dir>/results/` avec `--eval-dir` |

333| `name@skills-dir` | La même chose, pour un [plugin de répertoire de skills](/docs/fr/plugins-reference#skills-directory-plugins) |369| `name@skills-dir` | La même chose, pour un [plugin de répertoire de skills](/docs/fr/plugins/loading#plugins-shared-through-a-repository) |

334| Omis | Le répertoire courant en tant que chemin |370| Omis | Le répertoire courant en tant que chemin |

335 371 

336Ajoutez `--case <glob>` pour filtrer par nom de cas et `--tag <tag>` pour garder les cas avec l'une des balises données. Mettez la cible avant `--tag`, `--allow-tools`, et `--json`. Les deux premiers prennent une liste et `--json` prend un chemin optionnel, donc chacun d'eux lit une cible qui suit comme sa propre valeur.372Ajoutez `--case <glob>` pour filtrer par nom de cas et `--tag <tag>` pour garder les cas avec l'une des balises données.

373 

374Mettez la cible avant `--tag`, `--allow-tools`, et `--json`. Les deux premiers prennent une liste et `--json` prend un chemin optionnel, donc chacun d'eux lit une cible qui suit comme sa propre valeur.

337 375 

338<h3 id="grant-tools">376<h3 id="grant-tools">

339 Accorder les outils377 Accorder les outils


341 379 

342Les exécutions ne s'arrêtent jamais pour demander la permission. Les outils intégrés qui ont besoin d'une concession que vous n'avez pas donnée, comme `Bash`, `Write`, `Edit`, `WebFetch`, et `WebSearch`, sont supprimés de la session, donc Claude ne peut pas les appeler du tout.380Les exécutions ne s'arrêtent jamais pour demander la permission. Les outils intégrés qui ont besoin d'une concession que vous n'avez pas donnée, comme `Bash`, `Write`, `Edit`, `WebFetch`, et `WebSearch`, sont supprimés de la session, donc Claude ne peut pas les appeler du tout.

343 381 

344La liste d'autorisation est les outils en lecture seule que le cas énumère dans `allowed_tools`, à partir de `Read`, `Glob`, `Grep`, `NotebookRead`, `Skill`, `Agent`, `TodoWrite`, et les outils de tâche `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, et `TaskStop`, plus tout ce que vous accordez avec `--allow-tools`. Cette concession s'applique à chaque cas de l'exécution. Pour laisser les cas utiliser `Bash`, `Write`, `Edit`, `WebFetch`, ou `WebSearch`, accordez-les vous-même :382Une exécution permet seulement les outils en lecture seule que le cas énumère dans `allowed_tools`, à partir de `Read`, `Glob`, `Grep`, `NotebookRead`, `Skill`, `AskUserQuestion`, `Agent`, `TodoWrite`, et les outils de tâche `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, et `TaskStop`, plus tout ce que vous accordez avec `--allow-tools`. Cette concession s'applique à chaque cas de l'exécution. Pour laisser les cas utiliser `Bash`, `Write`, `Edit`, `WebFetch`, ou `WebSearch`, accordez-les vous-même :

345 383 

346```bash theme={null}384```bash theme={null}

347claude plugin eval . --allow-tools Write Edit "Bash(npm test *)"385claude plugin eval . --allow-tools Write Edit "Bash(npm test *)"

348```386```

349 387 

350Lorsqu'un cas a demandé un outil que vous n'avez pas accordé, l'exécution le énumère sur stderr comme `not granted`. Les outils sur un serveur MCP [mocké](#mock-mcp-servers) n'ont besoin d'aucune concession. Les outils sur un vrai serveur MCP de plugin ont besoin à la fois du serveur démarré, avec `--allow-real-servers` ou `--mocks off`, et d'une concession par nom, comme `--allow-tools "mcp__plugin_my-plugin_github__*"` ; les outils MCP d'un plugin sont nommés `mcp__plugin_<plugin>_<server>__<tool>`.388Lorsqu'un cas a demandé un outil que vous n'avez pas accordé, la sortie de progression le énumère comme `not granted`. Les outils sur un serveur MCP [mocké](#mock-mcp-servers) n'ont besoin d'aucune concession. Les outils sur un vrai serveur MCP de plugin ont besoin à la fois du serveur démarré, avec `--allow-real-servers` ou `--mocks off`, et d'une concession par nom, comme `--allow-tools "mcp__plugin_my-plugin_github__*"` ; les outils MCP d'un plugin sont nommés `mcp__plugin_<plugin>_<server>__<tool>`.

351 389 

352Lorsque vous accordez `Bash` sous n'importe quelle forme, chaque commande s'exécute sous le [sandbox au niveau du système d'exploitation](/docs/fr/sandboxing) de Claude Code. Les écritures sont confinées à l'espace de travail de l'exécution, votre répertoire personnel et la configuration de Claude Code sont illisibles, et l'accès réseau est limité aux domaines que vous accordez avec `--allow-tools "WebFetch(domain:example.com)"`. Si vous accordez Bash ou PowerShell sur une machine sans backend de sandbox, Claude Code refuse chaque exécution plutôt que de l'exécuter sans confinement, et le cas affiche une erreur d'exécution et marque généralement 0. Windows natif n'a pas de backend, donc exécutez les suites accordant le shell sous WSL2 ; sur Linux, installez d'abord `bubblewrap` et `socat`. Voir les [prérequis du sandboxing](/docs/fr/sandboxing).390Lorsque vous accordez `Bash` sous n'importe quelle forme, chaque commande s'exécute sous le [sandbox au niveau du système d'exploitation](/docs/fr/sandboxing) de Claude Code. Les écritures sont confinées à l'espace de travail de l'exécution, votre répertoire personnel et la configuration de Claude Code sont illisibles, et l'accès réseau est limité aux domaines que vous accordez avec `--allow-tools "WebFetch(domain:example.com)"`. Si vous accordez Bash ou PowerShell sur une machine sans backend de sandbox, Claude Code refuse chaque exécution plutôt que de l'exécuter sans confinement, et le cas affiche une erreur d'exécution et marque généralement 0. Windows natif n'a pas de backend, donc exécutez les suites accordant le shell sous WSL2 ; sur Linux, installez d'abord `bubblewrap` et `socat`. Voir les [prérequis du sandboxing](/docs/fr/sandboxing).

353 391 


404| 130 | Interrompu. Les résultats partiels sont écrits |442| 130 | Interrompu. Les résultats partiels sont écrits |

405| 143 | Terminé, comme par un délai d'expiration CI |443| 143 | Terminé, comme par un délai d'expiration CI |

406 444 

407Les problèmes d'écriture ou de publication du rapport HTML ne changent jamais le code de sortie. Pour voir pourquoi un cas a marqué bas, exécutez-le localement sans `--json` pour que les lignes de progression par exécution et d'évaluateur s'impriment.445Les problèmes d'écriture ou de publication du rapport HTML ne changent jamais le code de sortie.

446 

447Pour voir pourquoi un cas a marqué bas, exécutez-le localement sans `--json` pour que les lignes de progression par exécution et d'évaluateur s'impriment.

448 

449Un exécuteur CI a aussi besoin de ceux-ci en place :

408 450 

409Un exécuteur CI a besoin d'une installation Claude Code et de [identifiants dans l'environnement](/docs/fr/authentication) comme `ANTHROPIC_API_KEY`. Sans `--trust-plugin`, un travail dont le répertoire de checkout Claude Code ne fait pas déjà confiance est refusé avec la sortie 1 lorsqu'il n'a pas de terminal, ou attend à l'invite lorsque le coureur en alloue un. `claude plugin eval init` a besoin d'un terminal pour vous poser ses questions ; dans CI, exécutez `claude plugin eval init --bare <name>` pour obtenir le modèle vierge.451* **Installation et identifiants** : un exécuteur CI a besoin d'une installation Claude Code et d'[identifiants dans l'environnement](/docs/fr/authentication) comme `ANTHROPIC_API_KEY`.

452* **Confiance** : sans `--trust-plugin`, un travail dont le répertoire de checkout Claude Code ne fait pas déjà confiance a besoin de l'[invite de confiance à la première exécution](#trust-the-plugin-directory), et une exécution qui ne peut pas demander est refusée avec la sortie 1.

453* **`init` dans CI** : `claude plugin eval init` a besoin d'un terminal pour vous poser ses questions ; dans CI, exécutez `claude plugin eval init --bare <name>` pour obtenir le modèle vierge.

410 454 

411Pour garder les coûts prévisibles, donnez aux suites rapides à chaque changement seulement des évaluateurs qui n'appellent pas un juge, utilisez `--ablation none` où vous n'avez pas besoin de `Δ`, et laissez les documents `partial: true` et les exécutions avec `skippedPaidGraders` en dehors de toute tendance que vous tracez.455Pour garder les coûts prévisibles, donnez aux suites rapides à chaque changement seulement des évaluateurs qui n'appellent pas un juge, utilisez `--ablation none` où vous n'avez pas besoin de `Δ`, et laissez les documents `partial: true` et les exécutions avec `skippedPaidGraders` en dehors de toute tendance que vous tracez.

412 456 


461 Ce qu'une exécution peut accéder505 Ce qu'une exécution peut accéder

462</h2>506</h2>

463 507 

464`claude plugin eval` charge les skills, hooks et agents du plugin cible et exécute sa suite d'eval sur votre machine, en tant que vous. Le pointer vers un plugin est la même décision de confiance que `claude --plugin-dir`, donc n'évaluez que les plugins en lesquels vous avez confiance. L'isolation décrite dans cette section limite ce que l'agent en test peut atteindre ; ce n'est pas une limite contre le code du plugin lui-même, et une suite qui réussit ne dit rien sur la sécurité du plugin.508`claude plugin eval` charge les skills, hooks et agents du plugin cible et exécute sa suite d'eval sur votre machine, en tant que vous. Le pointer vers un plugin est la même décision de confiance que `claude --plugin-dir`, donc n'évaluez que les plugins en lesquels vous avez confiance.

509 

510L'isolation décrite dans cette section limite ce que l'agent en test peut atteindre ; ce n'est pas une limite contre le code du plugin lui-même, et une suite qui réussit ne dit rien sur la sécurité du plugin.

465 511 

466<h3 id="trust-the-plugin-directory">512<h3 id="trust-the-plugin-directory">

467 Faire confiance au répertoire du plugin513 Faire confiance au répertoire du plugin

468</h3>514</h3>

469 515 

470La première fois que vous exécutez `claude plugin eval` contre un répertoire, Claude Code demande `Trust this plugin directory?` avant de charger quoi que ce soit à partir de celui-ci, à moins que vous ayez déjà accepté l'invite de confiance là dans une session `claude` interactive. À l'intérieur d'un référentiel git, répondre oui fait confiance au référentiel entier, pour les sessions interactives aussi. Lorsque stdin ou stdout n'est pas un terminal, ou sous `--json`, l'exécution ne peut pas demander et est refusée avec la sortie 1 ; passez `--trust-plugin` pour affirmer la confiance vous-même, seulement pour un plugin que vous exécuteriez sur votre propre machine. Une cible que vous nommez plutôt que de donner en tant que chemin, signifiant un plugin installé ou un plugin de répertoire de skills, ignore l'invite.516La première fois que vous exécutez `claude plugin eval` contre un répertoire, Claude Code demande « Trust this plugin directory? » avant de charger quoi que ce soit à partir de celui-ci, à moins que vous ayez déjà accepté l'invite de confiance là dans une session `claude` interactive. À l'intérieur d'un référentiel git, répondre oui fait confiance au référentiel entier, pour les sessions interactives aussi. Lorsque stdin ou stdout n'est pas un terminal, sous `--json`, ou lorsque la variable d'environnement `CI` est définie à une valeur vraie comme `true`, l'exécution ne peut pas demander et est refusée avec la sortie 1 ; passez `--trust-plugin` pour affirmer la confiance vous-même, seulement pour un plugin que vous exécuteriez sur votre propre machine. Une cible que vous nommez plutôt que de donner en tant que chemin, signifiant un plugin installé ou un plugin de répertoire de skills, ignore l'invite.

517 

518Certaines parties du plugin et de la suite s'exécutent seulement lorsque vous passez leur drapeau pour cette exécution :

519 

520* Un [`scaffold_script`](#add-setup-or-history-with-case-yaml) de cas avec `--scaffold`

521* [Outils au-delà de l'ensemble en lecture seule](#grant-tools) avec `--allow-tools`

522* Les [vrais serveurs MCP](#mock-mcp-servers) du plugin avec `--allow-real-servers` ou `--mocks off`

471 523 

472Certaines parties du plugin et de la suite s'exécutent seulement lorsque vous passez leur drapeau pour cette exécution : un [`scaffold_script`](#add-setup-or-history-with-case-yaml) de cas avec `--scaffold`, [outils au-delà de l'ensemble en lecture seule](#grant-tools) avec `--allow-tools`, et les [vrais serveurs MCP](#mock-mcp-servers) du plugin avec `--allow-real-servers` ou `--mocks off`. Un `allowed_tools` de cas et un frontmatter `allowed-tools` propre d'une skill ne peuvent pas élargir aucun d'eux. Lorsque le plugin expédie des hooks que vous n'avez pas écrits, ou que vous démarrez ses vrais serveurs MCP, traitez ses scores comme consultatifs à moins que vous ne l'ayez exécuté dans un environnement isolé comme un conteneur ou un coureur CI, puisque les hooks et les serveurs s'exécutent en dehors du sandbox de l'agent et pourraient toucher les fichiers que les évaluateurs lisent.524Un `allowed_tools` de cas et un frontmatter `allowed-tools` propre d'une skill ne peuvent pas élargir aucun d'eux.

525 

526Lorsque le plugin inclut des hooks que vous n'avez pas écrits, ou que vous démarrez ses vrais serveurs MCP, traitez ses scores comme consultatifs à moins que vous ne l'ayez exécuté dans un environnement isolé comme un conteneur ou un coureur CI, puisque les hooks et les serveurs s'exécutent en dehors du sandbox de l'agent et pourraient modifier les fichiers que les évaluateurs lisent.

473 527 

474<h3 id="how-runs-are-isolated">528<h3 id="how-runs-are-isolated">

475 Comment les exécutions sont isolées529 Comment les exécutions sont isolées


537 Champs case.yaml591 Champs case.yaml

538</h3>592</h3>

539 593 

540`case.yaml` décrit le même cas en YAML et ajoute les champs qui pointent vers d'autres fichiers. Il nécessite `schema_version: "1.1"` et `name`. Les champs `prompt.md` `description`, `tags`, `plugins`, `runs`, et `expected_outcome` vont au niveau supérieur ; `model`, `max_turns`, `timeout_seconds`, `allowed_tools`, `append_system_prompt`, et `env` vont sous `execution:`. Lorsque les deux fichiers existent, le frontmatter de `prompt.md` remplace les champs `case.yaml` correspondants, le corps de `prompt.md` est l'invite, et `graders/*.md` sont ajoutés après tous les évaluateurs énumérés dans `case.yaml`.594`case.yaml` est une alternative ou un complément à `prompt.md` : il décrit un cas en YAML et ajoute les champs qui pointent vers d'autres fichiers. Il nécessite `schema_version: "1.1"` et `name`. Les champs `prompt.md` `description`, `tags`, `plugins`, `runs`, et `expected_outcome` vont au niveau supérieur ; `model`, `max_turns`, `timeout_seconds`, `allowed_tools`, `append_system_prompt`, et `env` vont sous `execution:`. Lorsque les deux fichiers existent, le frontmatter de `prompt.md` remplace les champs `case.yaml` correspondants, le corps de `prompt.md` est l'invite, et `graders/*.md` sont ajoutés après tous les évaluateurs énumérés dans `case.yaml`.

541 595 

542Ces champs existent seulement dans `case.yaml` :596Ces champs existent seulement dans `case.yaml` :

543 597 


556Chaque fichier d'évaluateur sous `graders/` prend ces clés en frontmatter, plus les options pour son type. Le nom de l'évaluateur est le nom du fichier sans `.md` :610Chaque fichier d'évaluateur sous `graders/` prend ces clés en frontmatter, plus les options pour son type. Le nom de l'évaluateur est le nom du fichier sans `.md` :

557 611 

558| Clé | Par défaut | Objectif |612| Clé | Par défaut | Objectif |

559| :------- | :--------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |613| :------- | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

560| `type` | requis | L'un des [types d'évaluateurs](#grader-types) |614| `type` | requis | L'un des [types d'évaluateurs](#grader-types) |

561| `weight` | `1` | Poids relatif dans le score de l'exécution. N'importe quel nombre positif |615| `weight` | `1` | Poids relatif dans le score de l'exécution. N'importe quel nombre positif |

562| `arm` | non défini | `with-only` exclut l'évaluateur de la notation dans une [exécution à deux bras](#compare-against-a-no-plugin-baseline) ; `both` force un évaluateur `tool_used: Skill` à être noté dans les deux bras |616| `arm` | non défini | `with-only` exclut l'évaluateur de la notation dans une [exécution à deux bras](#compare-against-a-no-plugin-baseline) ; `both` force un évaluateur que Claude Code exclurait autrement à être noté dans les deux bras |

563 617 

564<h4 id="what-a-grader-can-look-at">618<h4 id="what-a-grader-can-look-at">

565 Ce qu'un évaluateur peut regarder619 Ce qu'un évaluateur peut regarder


632 « is not a trusted plugin directory, and this run cannot stop to ask you about it »686 « is not a trusted plugin directory, and this run cannot stop to ask you about it »

633</h3>687</h3>

634 688 

635C'est la première exécution contre un répertoire que Claude Code ne fait pas confiance encore, et il ne peut pas demander parce que stdin ou stdout n'est pas un terminal ou vous avez passé `--json`. Exécutez `claude plugin eval <dir>` une fois dans un terminal et répondez à l'invite, ou passez `--trust-plugin` si vous faites confiance au code et à la suite du plugin. Voir [Ce qu'une exécution peut accéder](#security).689C'est la première exécution contre un répertoire que Claude Code ne fait pas confiance encore, et il ne peut pas demander parce que stdin ou stdout n'est pas un terminal, vous avez passé `--json`, ou la variable d'environnement `CI` est définie sur une valeur vraie comme `true`. Exécutez `claude plugin eval <dir>` une fois dans un terminal et répondez à l'invite, ou passez `--trust-plugin` si vous faites confiance au code et à la suite du plugin. Voir [Ce qu'une exécution peut accéder](#security).

636 690 

637<h3 id="no-eval-cases-found">691<h3 id="no-eval-cases-found">

638 « No eval cases found »692 « No eval cases found »


662 Tout marque zéro bien que les bons fichiers aient été produits716 Tout marque zéro bien que les bons fichiers aient été produits

663</h3>717</h3>

664 718 

665Vos évaluateurs ciblent `files`, la liste des chemins créés, lorsque vous aviez l'intention du contenu du fichier. Utilisez `{ source: file, path: <path> }` comme `target` ou `focus`. Séparément, `file_exists` compte seulement les fichiers créés pendant l'exécution, donc un fichier que le scaffold a créé ou que Claude a seulement modifié est invisible pour lui ; notez son contenu, ou utilisez `tool_used` sur `Edit`.719Vos évaluateurs ciblent `files`, la liste des chemins créés, lorsque vous aviez l'intention du contenu du fichier. Utilisez `{ source: file, path: <path> }` comme `target` ou `focus`.

720 

721Séparément, `file_exists` compte seulement les fichiers créés pendant l'exécution, donc un fichier que le scaffold a créé ou que Claude a seulement modifié est invisible pour lui ; notez son contenu, ou utilisez `tool_used` sur `Edit`.

666 722 

667<h3 id="a-regex-over-the-trace-doesn’t-match-text-i-can-see">723<h3 id="a-regex-over-the-trace-doesn’t-match-text-i-can-see">

668 Une regex sur la trace ne correspond pas au texte que je peux voir724 Une regex sur la trace ne correspond pas au texte que je peux voir

669</h3>725</h3>

670 726 

671La `target` par défaut est `last_message`, pas la trace. Lorsque vous ciblez `trace`, c'est du JSON par ligne, donc les guillemets apparaissent comme `\"`. Les regexes utilisent la syntaxe JavaScript, donc mettez `i` dans `flags` plutôt que d'écrire `(?i)`.727* **Mauvaise cible** : la `target` par défaut est `last_message`, pas la trace.

728* **Échappement JSON** : lorsque vous ciblez `trace`, c'est du JSON par ligne, donc les guillemets apparaissent comme `\"`.

729* **Syntaxe regex** : les regexes utilisent la syntaxe JavaScript, donc mettez `i` dans `flags` plutôt que d'écrire `(?i)`.

672 730 

673<h3 id="tools-are-denied-mcp-tools-are-missing-or-bash-won’t-run">731<h3 id="tools-are-denied-mcp-tools-are-missing-or-bash-won’t-run">

674 Les outils sont refusés, les outils MCP manquent, ou Bash ne s'exécutera pas732 Les outils sont refusés, les outils MCP manquent, ou Bash ne s'exécutera pas


710 Voir aussi768 Voir aussi

711</h2>769</h2>

712 770 

713* [Créer des plugins](/docs/fr/plugins) : construisez le plugin que vous testez, et chargez-le avec `--plugin-dir` pendant le développement771* [Créer un plugin](/docs/fr/plugins/create) : construisez le plugin que vous testez, et chargez-le avec `--plugin-dir` pendant le développement

714* [Référence des plugins](/docs/fr/plugins-reference#plugin-eval) : les entrées de commande `plugin eval` et `plugin eval init` et la clé `experimental.evals` du manifeste772* [Référence des commandes de plugin](/docs/fr/plugins/cli-reference#plugin-eval) : les entrées de commande `plugin eval` et `plugin eval init`. La clé [`experimental.evals`](/docs/fr/plugins/manifest-reference#fields) du manifeste se trouve dans la référence du manifeste

715* [Skills](/docs/fr/skills) : comment la description d'une skill décide quand Claude l'invoque, ce qu'un cas qui vérifie si la skill se déclenche mesure773* [Skills](/docs/fr/skills) : comment la description d'une skill décide quand Claude l'invoque, ce qu'un cas qui vérifie si la skill se déclenche mesure

716* [Sandboxing](/docs/fr/sandboxing) : le sandbox au niveau du système d'exploitation qui s'applique lorsque vous accordez Bash à une exécution774* [Sandboxing](/docs/fr/sandboxing) : le sandbox au niveau du système d'exploitation qui s'applique lorsque vous accordez Bash à une exécution

717* [Créer et distribuer un marché de plugins](/docs/fr/plugin-marketplaces) : publiez le plugin une fois que sa suite réussit775* [Publier un plugin](/docs/fr/plugins/publish) : publiez le plugin une fois que sa suite réussit

776* [Mesurer le coût et l'utilisation du plugin](/docs/fr/plugins/measure) : ce que le plugin ajoute au contexte de chaque session et si les gens l'utilisent toujours

plugin-hints.md +0 −172 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Recommander votre plugin depuis votre CLI

6 

7> Émettez un marqueur d'une ligne depuis votre CLI pour que Claude Code invite les utilisateurs à installer votre plugin officiel.

8 

9Si vous maintenez une CLI ou un SDK et disposez d'un plugin dans la marketplace officielle d'Anthropic, votre outil peut inviter les utilisateurs de Claude Code à installer ce plugin. Votre CLI écrit un marqueur d'une ligne sur stderr lorsqu'elle détecte qu'elle s'exécute dans Claude Code. Claude Code lit le marqueur, le supprime de la sortie et affiche à l'utilisateur une invite d'installation unique.

10 

11Le protocole ne nécessite aucune commande supplémentaire et ne change pas ce que votre CLI affiche pour les utilisateurs en dehors de Claude Code.

12 

13Cette page est destinée aux mainteneurs de CLI et de SDK. Si vous cherchez à installer des plugins, consultez [Découvrir et installer des plugins](/docs/fr/discover-plugins).

14 

15<h2 id="how-it-works">

16 Fonctionnement

17</h2>

18 

19Claude Code définit la variable d'environnement [`CLAUDECODE`](/docs/fr/env-vars) à `1` pour chaque commande qu'elle exécute via les outils Bash et PowerShell, et pour les commandes [hook](/docs/fr/hooks). À partir de la v2.1.172, elle définit également [`CLAUDE_CODE_CHILD_SESSION`](/docs/fr/env-vars) à `1` dans ces mêmes sous-processus. Lorsque votre CLI voit l'une de ces variables, elle écrit une balise auto-fermante `<claude-code-hint />` sur stderr. Dans les commandes hook, la balise d'indice est supprimée et ignorée. Seule la sortie des outils Bash et PowerShell déclenche l'invite d'installation.

20 

21Lorsque Claude Code reçoit la sortie de la commande, elle :

22 

231. Analyse les lignes d'indice et les supprime avant que la sortie n'atteigne le modèle

242. Vérifie que l'indice cible un plugin dans une marketplace officielle d'Anthropic

253. Vérifie que le plugin n'est pas déjà installé et n'a pas été proposé auparavant

264. Affiche à l'utilisateur une invite d'installation qui nomme la commande qui a émis l'indice

27 

28Claude Code n'installe jamais un plugin automatiquement. L'utilisateur confirme toujours.

29 

30<h2 id="emit-the-hint">

31 Émettre l'indice

32</h2>

33 

34Les invites d'indice ne s'activent que pour les plugins listés sur la marketplace officielle d'Anthropic. Consultez [Faire entrer votre plugin dans la marketplace officielle](#get-your-plugin-into-the-official-marketplace) avant de déployer l'intégration.

35 

36Conditionnez l'émission sur une variable d'environnement afin que le marqueur soit peu probable d'apparaître lorsqu'un humain exécute votre CLI directement, puis écrivez la balise sur stderr sur sa propre ligne. Choisissez quelle variable vérifier :

37 

38* `CLAUDECODE` : défini sur chaque version de Claude Code, il atteint donc le plus de sessions. Il est également défini dans les sessions tmux et les sous-processus du serveur MCP stdio que Claude Code démarre. Les extensions IDE le définissent également dans leurs terminaux intégrés, où un humain peut exécuter votre CLI directement.

39* `CLAUDE_CODE_CHILD_SESSION` : défini uniquement dans les sous-processus que Claude Code lui-même génère, tels que les appels d'outils, les commandes hook et les commandes de [ligne d'état](/docs/fr/statusline), afin que la balise n'atteigne normalement pas un terminal humain. Un processus de longue durée qui a été démarré à l'intérieur d'une session, comme un serveur tmux, capture la variable, de sorte que les shells lancés ultérieurement à partir de ce processus affichent toujours la balise brute.

40 

41Les exemples suivants conditionnent sur `CLAUDECODE` pour une portée maximale et émettent un indice pour un plugin nommé `example-cli` dans la marketplace officielle :

42 

43<CodeGroup>

44 ```javascript Node.js theme={null}

45 if (process.env.CLAUDECODE) {

46 process.stderr.write(

47 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />\n',

48 )

49 }

50 ```

51 

52 ```python Python theme={null}

53 import os, sys

54 

55 if os.environ.get("CLAUDECODE"):

56 print(

57 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />',

58 file=sys.stderr,

59 )

60 ```

61 

62 ```go Go theme={null}

63 if os.Getenv("CLAUDECODE") != "" {

64 fmt.Fprintln(os.Stderr,

65 `<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />`)

66 }

67 ```

68 

69 ```shell Shell theme={null}

70 if [ -n "$CLAUDECODE" ]; then

71 printf '%s\n' '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />' >&2

72 fi

73 ```

74</CodeGroup>

75 

76Remplacez `example-cli` par le nom de votre plugin dans la marketplace officielle.

77 

78<h2 id="choose-where-to-emit">

79 Choisir où émettre

80</h2>

81 

82Vous contrôlez les chemins de code qui émettent l'indice. Claude Code déduplique par plugin, donc émettre à chaque invocation n'a aucun inconvénient. Les points de contact qui fonctionnent bien incluent :

83 

84| Placement | Pourquoi cela fonctionne |

85| :----------------------------------------- | :--------------------------------------------------------------------- |

86| Sortie `--help` | Claude exécute souvent l'aide lors de l'exploration d'une CLI inconnue |

87| Erreurs de sous-commande inconnue | Atteint le moment où Claude est confus par votre interface |

88| Succès de connexion ou d'authentification | L'utilisateur est déjà dans un état d'esprit de configuration |

89| Message de bienvenue de première exécution | Un moment d'intégration naturel |

90 

91<h2 id="what-the-user-sees">

92 Ce que voit l'utilisateur

93</h2>

94 

95Lorsque l'indice passe tous les contrôles, Claude Code affiche une invite comme la suivante :

96 

97```text theme={null}

98─────────────────────────────────────────────────────────────

99 Recommandation de plugin

100 

101 La commande example-cli suggère d'installer un plugin.

102 

103 Plugin : example-cli

104 Marketplace : claude-plugins-official

105 Intégration officielle pour les déploiements example-cli

106 

107 Voulez-vous l'installer ?

108 ❯ 1. Oui, installer example-cli

109 2. Non

110 3. Non, et ne plus afficher les suggestions d'installation de plugins

111 

112─────────────────────────────────────────────────────────────

113```

114 

115L'invite nomme la commande qui a produit l'indice afin que les utilisateurs puissent détecter une discordance entre l'outil et le plugin qu'il recommande. Si l'utilisateur ne répond pas dans les 30 secondes, Claude Code rejette l'invite en tant que **Non**.

116 

117La fréquence des invites est limitée, et certaines sessions ne proposent jamais d'invite :

118 

119* **Une fois par plugin** : après l'affichage de l'invite, Claude Code enregistre le plugin et ne le propose jamais plus, quel que soit la réponse de l'utilisateur.

120* **Une fois par session** : sur tous les CLIs de la machine, au maximum une invite d'indice apparaît par session Claude Code.

121* **Session interactive principale uniquement** : Claude Code affiche l'invite uniquement dans la session de terminal dans laquelle l'utilisateur tape. Claude Code ne propose jamais d'invite pour une commande qu'un [sous-agent](/docs/fr/sub-agents) exécute, et ne propose jamais d'invite lorsque l'utilisateur exécute Claude Code en [mode non interactif](/docs/fr/headless) avec l'indicateur `-p` ou via le [SDK Agent](/docs/fr/agent-sdk/overview). Claude Code supprime toujours la ligne d'indice de la sortie de la commande dans tous ces cas.

122* **Désactivations de télémétrie** : les sessions où l'analyse est désactivée ne montrent jamais d'invites d'indice. Cela inclut les sessions avec `DISABLE_TELEMETRY` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` définis, et les sessions sur des fournisseurs tiers tels qu'Amazon Bedrock ou la plateforme Agent de Google Cloud où la [désactivation automatique de la télémétrie](/docs/fr/data-usage#default-behaviors-by-api-provider) s'applique.

123 

124Sélectionner **Oui** installe le plugin à la portée utilisateur. Sélectionner **Non, et ne plus afficher les suggestions d'installation de plugins** désactive toutes les futures invites d'indice pour l'utilisateur.

125 

126<h2 id="hint-format">

127 Format de l'indice

128</h2>

129 

130L'indice est une balise auto-fermante avec trois attributs requis.

131 

132```text theme={null}

133<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />

134```

135 

136| Attribut | Requis | Description |

137| :------- | :----- | :------------------------------------------------------------ |

138| `v` | Oui | Version du protocole. `1` est la seule valeur prise en charge |

139| `type` | Oui | Type d'indice. `plugin` est la seule valeur prise en charge |

140| `value` | Oui | Identifiant du plugin sous la forme `name@marketplace` |

141 

142Les valeurs d'attribut peuvent être entre guillemets doubles ou sans guillemets. Les valeurs sans guillemets ne peuvent pas contenir d'espaces. Les séquences d'échappement ne sont pas prises en charge.

143 

144<h2 id="requirements">

145 Exigences

146</h2>

147 

148Claude Code applique deux conditions avant d'agir sur un indice. Les indices qui échouent à l'un des contrôles sont supprimés :

149 

150* **Ligne propre** : la balise doit occuper sa propre ligne. Une balise intégrée au milieu d'une ligne, par exemple à l'intérieur d'une instruction de journal, est ignorée. Les espaces blancs de début et de fin sur la ligne sont autorisés.

151* **Marketplace officielle** : la `value` doit référencer un plugin dans une marketplace contrôlée par Anthropic, telle que `claude-plugins-official`. Les indices pointant vers d'autres marketplaces sont silencieusement supprimés.

152 

153La ligne d'indice est toujours supprimée de la sortie avant qu'elle n'atteigne le modèle, même lorsque la version ou le type n'est pas reconnu, de sorte que le marqueur n'est jamais comptabilisé dans l'utilisation des tokens.

154 

155Les conseils restants sont recommandés mais non appliqués. Claude Code ne peut pas observer si votre CLI les suit :

156 

157* **Écrire sur stderr** : stderr garde la balise hors des pipelines shell tels que `example-cli deploy | jq`. Claude Code analyse les deux flux, donc stdout fonctionne aussi.

158* **Conditionner sur une variable d'environnement** : n'émettez que lorsque `CLAUDECODE` ou `CLAUDE_CODE_CHILD_SESSION` est défini. Consultez [Émettre l'indice](#emit-the-hint) pour savoir comment les deux variables diffèrent.

159 

160<h2 id="get-your-plugin-into-the-official-marketplace">

161 Obtenir votre plugin dans la marketplace officielle

162</h2>

163 

164Le protocole d'indice ne prend effet que pour les plugins répertoriés dans la marketplace officielle d'Anthropic, `claude-plugins-official`. Anthropic gère cette marketplace à sa discrétion, et les formulaires de soumission intégrés à l'application ajoutent des plugins à la [marketplace communautaire](/docs/fr/plugins#submit-your-plugin-to-the-community-marketplace) à la place, que le protocole d'indice ne vérifie pas. Si vous travaillez avec un contact partenaire d'Anthropic, contactez-le pour coordonner une inscription à la marketplace officielle.

165 

166<h2 id="see-also">

167 Voir aussi

168</h2>

169 

170* [Créer des plugins](/docs/fr/plugins) : créez le plugin que votre CLI recommande

171* [Créer et distribuer une marketplace de plugins](/docs/fr/plugin-marketplaces) : hébergez des plugins en dehors de la marketplace officielle

172* [Variables d'environnement](/docs/fr/env-vars) : référence complète pour `CLAUDECODE` et les variables associées

plugin-marketplaces.md +0 −1688 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Créer et distribuer une place de marché de plugins

6 

7> Créez et hébergez des places de marché de plugins pour distribuer les extensions Claude Code dans vos équipes et communautés.

8 

9Une **place de marché de plugins** est un catalogue qui vous permet de distribuer des plugins à d'autres. Les places de marché offrent une découverte centralisée, un suivi des versions, des mises à jour automatiques et la prise en charge de plusieurs types de sources, notamment les dépôts git et les chemins locaux. Ce guide vous montre comment créer votre propre place de marché pour partager des plugins avec votre équipe ou votre communauté.

10 

11Vous cherchez à installer des plugins à partir d'une place de marché existante ? Consultez [Découvrir et installer des plugins préconfigurés](/docs/fr/discover-plugins).

12 

13<h2 id="overview">

14 Aperçu

15</h2>

16 

17La création et la distribution d'une place de marché impliquent :

18 

191. **Créer des plugins** : créez un ou plusieurs plugins avec des compétences, des agents, des hooks, des serveurs MCP ou des serveurs LSP. Ce guide suppose que vous avez déjà des plugins à distribuer ; consultez [Créer des plugins](/docs/fr/plugins) pour plus de détails sur la création de plugins.

202. **Créer le fichier de place de marché** : définissez un `marketplace.json` qui répertorie vos plugins et où les trouver. Voir [Créer le fichier de place de marché](#create-the-marketplace-file).

213. **Héberger la place de marché** : poussez vers GitHub, GitLab ou un autre hôte git. Voir [Héberger et distribuer les places de marché](#host-and-distribute-marketplaces).

224. **Partager avec les utilisateurs** : les utilisateurs ajoutent votre place de marché avec `/plugin marketplace add` et installent des plugins individuels. Voir [Découvrir et installer des plugins](/docs/fr/discover-plugins).

23 

24Une fois votre place de marché en ligne, vous pouvez la mettre à jour en poussant les modifications vers votre dépôt. Les utilisateurs actualisent leur copie locale avec `/plugin marketplace update`.

25 

26<h2 id="walkthrough-create-a-local-marketplace">

27 Procédure pas à pas : créer une place de marché locale

28</h2>

29 

30Cet exemple crée une place de marché avec un plugin : une compétence `quality-review` pour les révisions de code. Vous allez créer la structure de répertoires, ajouter une compétence, créer le manifeste du plugin et le catalogue de la place de marché, puis l'installer et la tester.

31 

32<Steps>

33 <Step title="Créer la structure de répertoires">

34 ```bash theme={null}

35 mkdir -p my-marketplace/.claude-plugin

36 mkdir -p my-marketplace/plugins/quality-review-plugin/.claude-plugin

37 mkdir -p my-marketplace/plugins/quality-review-plugin/skills/quality-review

38 ```

39 </Step>

40 

41 <Step title="Créer la compétence">

42 Créez un fichier `SKILL.md` qui définit ce que fait la compétence `quality-review`.

43 

44 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

45 ---

46 description: Review code for bugs, security, and performance

47 ---

48 

49 Review the code I've selected or the recent changes for:

50 - Potential bugs or edge cases

51 - Security concerns

52 - Performance issues

53 - Readability improvements

54 

55 Be concise and actionable.

56 ```

57 </Step>

58 

59 <Step title="Créer le manifeste du plugin">

60 Créez un fichier `plugin.json` qui décrit le plugin. Le manifeste se trouve dans le répertoire `.claude-plugin/`.

61 

62 ```json my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json theme={null}

63 {

64 "name": "quality-review-plugin",

65 "description": "Adds a quality-review skill for quick code reviews",

66 "version": "1.0.0",

67 "author": {

68 "name": "Your Name"

69 }

70 }

71 ```

72 

73 <Note>

74 La définition de `version` signifie que les utilisateurs ne reçoivent des mises à jour que lorsque vous modifiez ce champ, donc augmentez-le à chaque version. Un plugin avec une [source `command`](#command-sources) n'est pas épinglé par ce champ. Pas plus qu'un plugin [chargé sur place](/docs/fr/plugins-reference#plugin-caching-and-file-resolution) à partir d'une place de marché ajoutée en tant que répertoire local. Si vous omettez `version`, la version provient de la source suivante dans [gestion des versions](/docs/fr/plugins-reference#version-management).

75 </Note>

76 </Step>

77 

78 <Step title="Créer le fichier de place de marché">

79 Créez le catalogue de la place de marché qui répertorie votre plugin.

80 

81 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

82 {

83 "name": "my-plugins",

84 "owner": {

85 "name": "Your Name"

86 },

87 "plugins": [

88 {

89 "name": "quality-review-plugin",

90 "source": "./plugins/quality-review-plugin",

91 "description": "Adds a quality-review skill for quick code reviews"

92 }

93 ]

94 }

95 ```

96 </Step>

97 

98 <Step title="Ajouter et installer">

99 À partir du répertoire qui contient `my-marketplace`, démarrez Claude Code et exécutez les commandes suivantes. La commande d'installation ouvre une vue de détails du plugin où vous sélectionnez une portée d'installation pour confirmer l'installation. Vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications du plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting).

100 

101 ```shell theme={null}

102 /plugin marketplace add ./my-marketplace

103 /plugin install quality-review-plugin@my-plugins

104 ```

105 </Step>

106 

107 <Step title="Essayer">

108 Sélectionnez du code dans votre éditeur et exécutez votre nouvelle compétence. Les compétences des plugins sont espacées avec le nom du plugin.

109 

110 ```shell theme={null}

111 /quality-review-plugin:quality-review

112 ```

113 </Step>

114</Steps>

115 

116Pour en savoir plus sur ce que les plugins peuvent faire, notamment les hooks, les agents, les serveurs MCP et les serveurs LSP, consultez [Plugins](/docs/fr/plugins).

117 

118<Note>

119 **Comment les plugins sont installés** : lorsque les utilisateurs installent un plugin, Claude Code copie le répertoire du plugin vers un emplacement de cache, sauf si le plugin se charge sur place. Une [source `command` en mode lien](#copy-mode-and-link-mode) se charge sur place, tout comme une [source de chemin relatif](#relative-paths) dans une place de marché ajoutée à partir d'un répertoire local. Les plugins copiés ne peuvent pas référencer des fichiers en dehors de leur répertoire en utilisant des chemins comme `../shared-utils`, car ces fichiers ne seront pas copiés.

120 

121 Si vous devez partager des fichiers entre les plugins, utilisez des symlinks. Consultez [Plugin caching and file resolution](/docs/fr/plugins-reference#plugin-caching-and-file-resolution) pour plus de détails.

122</Note>

123 

124<h2 id="create-the-marketplace-file">

125 Créer le fichier de place de marché

126</h2>

127 

128Créez `.claude-plugin/marketplace.json` à la racine de votre dépôt. Ce fichier définit le nom de votre place de marché, les informations du propriétaire et une liste de plugins avec leurs sources.

129 

130Chaque entrée de plugin a besoin au minimum d'un `name` et d'une `source` qui indique à Claude Code où la récupérer. Consultez le [schéma complet](#marketplace-schema) ci-dessous pour tous les champs disponibles.

131 

132```json theme={null}

133{

134 "name": "company-tools",

135 "owner": {

136 "name": "DevTools Team",

137 "email": "devtools@example.com"

138 },

139 "plugins": [

140 {

141 "name": "code-formatter",

142 "source": "./plugins/formatter",

143 "description": "Automatic code formatting on save",

144 "version": "2.1.0",

145 "author": {

146 "name": "DevTools Team"

147 }

148 },

149 {

150 "name": "deployment-tools",

151 "source": {

152 "source": "github",

153 "repo": "company/deploy-plugin"

154 },

155 "description": "Deployment automation tools"

156 }

157 ]

158}

159```

160 

161<h2 id="marketplace-schema">

162 Schéma de la place de marché

163</h2>

164 

165<h3 id="required-fields">

166 Champs obligatoires

167</h3>

168 

169| Champ | Type | Description | Exemple |

170| :-------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------- |

171| `name` | string | Identifiant de la place de marché en kebab-case, sans espaces, caractères de contrôle ou caractères de formatage bidirectionnel. C'est un élément public : les utilisateurs le voient lors de l'installation de plugins (par exemple, `/plugin install my-tool@your-marketplace`). Chaque utilisateur ne peut enregistrer qu'une seule place de marché par nom : l'ajout d'une deuxième place de marché portant le même nom remplace la première. Pour publier plusieurs plugins sous un seul nom de place de marché, listez-les tous dans un seul [`marketplace.json`](#create-the-marketplace-file). | `"acme-tools"` |

172| `owner` | object | Informations du responsable de la place de marché. Voir [Champs du propriétaire](#owner-fields) | |

173| `plugins` | array | Liste des plugins disponibles | Voir [Entrées de plugin](#plugin-entries) |

174 

175<Note>

176 **Noms réservés** : les noms de place de marché suivants sont réservés à l'usage officiel d'Anthropic et ne peuvent pas être utilisés par les places de marché tierces : `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `claude-plugins-community`, `claude-community`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `knowledge-work-plugins`, `life-sciences`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins`, `claude-tag-plugins`, `healthcare`. Les noms qui usurpent l'identité de places de marché officielles, comme `official-claude-plugins` ou `anthropic-plugins-v2`, sont également bloqués. La réservation de ces noms empêche une place de marché tierce de se présenter comme une source publiée par Anthropic.

177 

178 Claude Code revérifie les noms réservés chaque fois qu'il charge une place de marché, pas seulement lorsque vous en ajoutez une. Une place de marché qui a été enregistrée sous l'un de ces noms avant que le nom ne soit réservé cesse de se charger et signale qu'elle est [enregistrée à partir d'une source non fiable](/docs/fr/errors#marketplace-is-registered-from-an-untrusted-source). Supprimez cette place de marché et rajoutez-la à partir de la source officielle d'Anthropic. Une place de marché tierce affectée par un nom nouvellement réservé se charge à nouveau dès que vous la rajoutez sous un nom différent. Avant la v2.1.205, `first-party-plugins` et `healthcare` n'étaient pas réservés, et une place de marché déjà enregistrée sous un nom réservé continuait à se charger. Avant la v2.1.265, `claude-tag-plugins` n'était pas réservé.

179 

180 Vous ne pouvez pas non plus nommer une place de marché `npm`, `pip`, `uv`, `cargo`, `github`, ou `gh`, quelle que soit la casse. Cette vérification nécessite Claude Code v2.1.275 ou version ultérieure.

181</Note>

182 

183<h3 id="owner-fields">

184 Champs du propriétaire

185</h3>

186 

187| Champ | Type | Obligatoire | Description |

188| :------ | :----- | :---------- | :----------------------------------------------- |

189| `name` | string | Oui | Nom du responsable ou de l'équipe |

190| `email` | string | Non | Adresse e-mail de contact du responsable |

191| `url` | string | Non | Site web, profil GitHub ou URL de l'organisation |

192 

193<h3 id="optional-fields">

194 Champs optionnels

195</h3>

196 

197| Champ | Type | Description |

198| :------------------------------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

199| `$schema` | string | URL du schéma JSON pour l'autocomplétion et la validation de l'éditeur. Claude Code ignore ce champ au moment du chargement. |

200| `description` | string | Brève description de la place de marché |

201| `version` | string | Version du manifeste de la place de marché |

202| `metadata.pluginRoot` | string | Répertoire que Claude Code résout pour les noms de source de plugin nus. Voir [Chemins relatifs](#relative-paths). Nécessite Claude Code v2.1.239 ou version ultérieure. |

203| `allowCrossMarketplaceDependenciesOn` | array | Autres places de marché sur lesquelles les plugins de cette place de marché peuvent dépendre. Les dépendances d'une place de marché non listée ici sont bloquées à l'installation. Voir [Dépendre d'un plugin d'une autre place de marché](/docs/fr/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

204| `renames` | object | Mappage d'un ancien nom de plugin `name` à son nom actuel, ou à `null` si le plugin a été supprimé. Permet aux utilisateurs existants de migrer automatiquement lorsque vous renommez ou supprimez une entrée dans `plugins`. Voir [Renommer ou supprimer un plugin](#rename-or-remove-a-plugin). Nécessite Claude Code v2.1.193 ou version ultérieure. |

205 

206`description` et `version` sont également acceptés sous `metadata` pour la compatibilité rétroactive.

207 

208<h2 id="plugin-entries">

209 Entrées de plugin

210</h2>

211 

212Chaque entrée de plugin dans le tableau `plugins` décrit un plugin et où le trouver. Vous pouvez inclure n'importe quel champ du [schéma du manifeste du plugin](/docs/fr/plugins-reference#plugin-manifest-schema), tel que `description`, `version`, `author`, `commands` et `hooks`, plus ces champs spécifiques à la place de marché : `source`, `category`, `tags`, `strict`, `relevance`, `headers` et `headersHelper`.

213 

214<h3 id="required-fields-2">

215 Champs obligatoires

216</h3>

217 

218| Champ | Type | Description |

219| :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

220| `name` | string | Identifiant du plugin en kebab-case, sans espaces, caractères de contrôle ou caractères de formatage bidirectionnel. C'est un élément public : les utilisateurs le voient lors de l'installation (par exemple, `/plugin install my-plugin@marketplace`). |

221| `source` | string\|object | Où récupérer le plugin (voir [Sources de plugin](#plugin-sources) ci-dessous) |

222 

223<h3 id="optional-plugin-fields">

224 Champs de plugin optionnels

225</h3>

226 

227**Champs de métadonnées standard :**

228 

229| Champ | Type | Description |

230| :--------------- | :------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

231| `displayName` | string | Nom lisible affiché dans les surfaces de l'interface utilisateur. Lorsque ni l'entrée ni le `plugin.json` du plugin n'en définissent un, les utilisateurs voient le `name` du plugin. Peut contenir des espaces et n'importe quelle casse. Non utilisé pour l'espace de noms ou la recherche. |

232| `description` | string | Brève description du plugin |

233| `version` | string | Version du plugin. Si défini (ici ou dans `plugin.json`), le plugin est épinglé à cette chaîne et les utilisateurs ne reçoivent des mises à jour que lorsqu'elle change. Un plugin avec une [source `command`](#command-sources) n'est pas épinglé par l'un ou l'autre champ. Ni un plugin [chargé sur place](/docs/fr/plugins-reference#plugin-caching-and-file-resolution) à partir d'une place de marché ajoutée en tant que répertoire local. Si défini dans aucun des deux endroits, la version provient de la source suivante dans [gestion des versions](/docs/fr/plugins-reference#version-management). |

234| `author` | object | Informations sur l'auteur du plugin (`name` obligatoire ; `email` et `url` optionnels) |

235| `homepage` | string | URL de la page d'accueil ou de la documentation du plugin |

236| `repository` | string | URL du dépôt du code source |

237| `license` | string | Identifiant de licence SPDX (par exemple, MIT, Apache-2.0) |

238| `keywords` | array | Balises pour la découverte et la catégorisation des plugins |

239| `metadata` | object | Objet libre pour vos propres champs, tels que les données de droit ou de catalogue. Claude Code ne le lit pas. Avant v2.1.222, `claude plugin validate` signalait la clé comme un champ non reconnu. |

240| `category` | string | Catégorie du plugin pour l'organisation |

241| `tags` | array | Balises pour la recherche |

242| `strict` | boolean | Contrôle si `plugin.json` est l'autorité pour les définitions de composants (par défaut : true). Voir [Mode strict](#strict-mode) ci-dessous. |

243| `relevance` | object | Signaux qui indiquent à Claude Code quand suggérer ce plugin aux utilisateurs. Prend effet uniquement pour les places de marché qu'un administrateur autorise dans les paramètres gérés. Voir [Recommander des plugins pour votre organisation](/docs/fr/plugin-relevance). |

244| `defaultEnabled` | boolean | Si le plugin est activé après l'installation (par défaut : true). Définissez sur `false` pour installer le plugin désactivé jusqu'à ce que l'utilisateur l'active. Prend la priorité sur le même champ dans le `plugin.json` du plugin. Voir [Activation par défaut](/docs/fr/plugins-reference#default-enablement). |

245 

246Les deux l'entrée et le `plugin.json` du plugin peuvent définir les champs d'affichage `displayName`, `description`, `author`, `homepage`, `repository`, `license` et `keywords`. Dans les listes de plugins et les détails, avant et après l'installation :

247 

248* Pour un champ que vous définissez sur l'entrée, les utilisateurs voient la valeur de l'entrée, même lorsque `plugin.json` en définit une différente.

249* Pour un champ que l'entrée laisse non défini, les utilisateurs voient la valeur de `plugin.json`.

250 

251Avant l'installation, Claude Code ne peut lire `plugin.json` que pour les entrées avec une [source de chemin relatif](#relative-paths), dont les fichiers de plugin se trouvent à l'intérieur de la place de marché elle-même. Pour une entrée avec tout autre type de source, les utilisateurs ne voient que les champs de l'entrée elle-même jusqu'à ce qu'ils installent le plugin.

252 

253**Champs de configuration des composants :**

254 

255| Champ | Type | Description |

256| :----------- | :------------- | :------------------------------------------------------------------------------------ |

257| `skills` | string\|array | Chemins personnalisés vers les répertoires de compétences contenant `<name>/SKILL.md` |

258| `commands` | string\|array | Chemins personnalisés vers les fichiers de compétences `.md` plats ou les répertoires |

259| `agents` | string\|array | Chemins personnalisés vers les fichiers d'agents |

260| `hooks` | string\|object | Configuration personnalisée des hooks ou chemin vers le fichier des hooks |

261| `mcpServers` | string\|object | Configurations du serveur MCP ou chemin vers la configuration MCP |

262| `lspServers` | string\|object | Configurations du serveur LSP ou chemin vers la configuration LSP |

263 

264**Champs d'authentification d'archive :**

265 

266Définissez ces champs lorsque l'entrée a une [source `archive`](#zip-archives) sur un serveur qui nécessite des identifiants.

267 

268| Champ | Type | Description |

269| :-------------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

270| `headers` | object | En-têtes HTTP que Claude Code envoie lorsqu'il télécharge l'archive de cette entrée. Remplace les en-têtes de la place de marché du même nom. Nécessite Claude Code v2.1.238 ou version ultérieure. |

271| `headersHelper` | string | Commande qui imprime les en-têtes HTTP pour le téléchargement d'archive de cette entrée sous la forme d'un objet JSON, pour un identifiant qui expire. Voir [Authentifier les téléchargements d'archive](#authenticate-archive-downloads). L'entrée doit également définir [`"strict": false`](#strict-mode). Nécessite Claude Code v2.1.238 ou version ultérieure. |

272 

273<h2 id="plugin-sources">

274 Sources de plugin

275</h2>

276 

277Les sources de plugin indiquent à Claude Code où récupérer chaque plugin individuel répertorié dans votre place de marché. Elles sont définies dans le champ `source` de chaque entrée de plugin dans `marketplace.json`.

278 

279Claude Code copie chaque plugin installé dans le cache de plugin local versionné à `~/.claude/plugins/cache`, sauf si le plugin se charge à la place. Une [source `command` en mode lien](#copy-mode-and-link-mode) se charge à la place, tout comme une [source de chemin relatif](#relative-paths) dans une place de marché ajoutée à partir d'un répertoire local. Claude Code [installe également les dépendances de paquet Node.js éligibles du plugin](/docs/fr/plugins-reference#node-js-package-dependencies) dans la copie en cache. Voir [Mise en cache des plugins et résolution de fichiers](/docs/fr/plugins-reference#plugin-caching-and-file-resolution) pour savoir comment un plugin chargé à la place à partir d'une place de marché de répertoire local récupère vos modifications.

280 

281| Source | Type | Champs | Notes |

282| -------------- | -------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

283| Chemin relatif | `string` (par exemple `"./my-plugin"`) | aucun | Répertoire local dans le dépôt de la place de marché. Doit commencer par `./`, sauf si vous écrivez un [nom nu sous `metadata.pluginRoot`](#relative-paths). Claude Code résout le chemin par rapport à la racine de la place de marché, pas au répertoire `.claude-plugin/` |

284| `github` | object | `repo`, `ref?`, `sha?` | |

285| `url` | object | `url`, `ref?`, `sha?` | Source d'URL Git |

286| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Sous-répertoire dans un dépôt git. Clone partiellement pour minimiser la bande passante pour les monodépôts |

287| `npm` | object | `package`, `version?`, `registry?` | Paquet npm, récupéré avec votre client npm et déballé sans exécuter les scripts d'installation |

288| `archive` | object | `url`, `sha256?` | Archive zip téléchargée via HTTPS. Fonctionne sans git ou npm sur la machine de l'utilisateur. Nécessite Claude Code v2.1.224 ou ultérieur |

289| `command` | object | `command`, `timeout?`, `mode?` | Répertoire de plugin produit en exécutant une commande locale, réexécutée une fois par session pour récupérer les modifications. Nécessite Claude Code v2.1.229 ou ultérieur |

290 

291<Note>

292 **Sources de place de marché vs sources de plugin** : Ce sont des concepts différents qui contrôlent des choses différentes.

293 

294 * **Source de place de marché** : où récupérer le catalogue `marketplace.json` lui-même. Défini lorsque les utilisateurs exécutent `/plugin marketplace add` ou dans les paramètres `extraKnownMarketplaces`. Les sources de place de marché basées sur Git prennent en charge `ref` (branche/tag) mais pas `sha`.

295 * **Source de plugin** : où récupérer un plugin individuel répertorié dans la place de marché. Défini dans le champ `source` de chaque entrée de plugin dans `marketplace.json`. Les sources de plugin basées sur Git prennent en charge à la fois `ref` (branche/tag) et `sha` (commit exact).

296 

297 Par exemple, une place de marché hébergée à `acme-corp/plugin-catalog` (source de place de marché) peut répertorier un plugin récupéré à partir de `acme-corp/code-formatter` (source de plugin). La source de place de marché et la source de plugin pointent vers des dépôts différents et sont épinglées indépendamment.

298</Note>

299 

300Les types de source basés sur git ci-dessous sont `github`, `url` et `git-subdir`. Lorsque `ref` et `sha` sont tous deux définis sur l'un d'eux, le `sha` est l'épingle effective. Claude Code récupère et vérifie le commit épinglé directement.

301 

302Sur la plupart des hôtes git, y compris GitHub, GitLab et Bitbucket, cela signifie que l'installation réussit même si la branche ou le tag nommé par `ref` a depuis été supprimé en amont, tant que le commit est toujours accessible à partir du dépôt. Certains serveurs, tels qu'AWS CodeCommit, ne prennent pas en charge la récupération des commits par SHA. Sur ces serveurs, le `ref` doit toujours exister et le commit épinglé doit être accessible à partir de celui-ci.

303 

304Si vous distribuez des plugins via **Paramètres de l'organisation > Plugins**, seuls certains types de source sont autorisés. Voir [Distribuer via les paramètres de l'organisation](#distribute-through-organization-settings).

305 

306<h3 id="relative-paths">

307 Chemins relatifs

308</h3>

309 

310Pour les plugins dans le même dépôt, utilisez un chemin commençant par `./` :

311 

312```json theme={null}

313{

314 "name": "my-plugin",

315 "source": "./plugins/my-plugin"

316}

317```

318 

319Les chemins se résolvent par rapport à la racine de la place de marché, qui est le répertoire contenant `.claude-plugin/`. La source `./plugins/my-plugin` pointe donc vers `<repo>/plugins/my-plugin`, même si `marketplace.json` se trouve à `<repo>/.claude-plugin/marketplace.json`. N'utilisez pas `../` pour référencer des chemins en dehors de la racine de la place de marché. Sur macOS et Linux, Claude Code refuse une entrée de chemin avec une barre oblique inverse n'importe où après le `./` initial, donc écrivez les séparateurs comme `/` sur chaque plateforme.

320 

321Un nom nu est un seul nom de répertoire sans `/`, tel que `"formatter"`. Pour écrire des noms nus au lieu de chemins `./`, définissez [`metadata.pluginRoot`](#optional-fields) sur le répertoire sous lequel ils se résolvent. Avec `"pluginRoot": "./plugins"`, Claude Code résout `"source": "formatter"` en `./plugins/formatter`. Nécessite Claude Code v2.1.239 ou ultérieur.

322 

323`metadata.pluginRoot` doit lui-même être un chemin relatif à l'intérieur de la place de marché. Claude Code l'ignore pour une source qui commence déjà par `./`. Une source qui contient un `/`, tel que `team-a/formatter`, n'est pas un nom nu et a toujours besoin du préfixe `./`, même lorsque `metadata.pluginRoot` est défini.

324 

325<Note>

326 Claude Code résout les chemins relatifs par rapport à une copie locale de la place de marché, donc ils fonctionnent lorsque les utilisateurs ajoutent votre place de marché à partir d'une source git ou d'un répertoire local. Si les utilisateurs ajoutent votre place de marché via une URL directe vers le fichier `marketplace.json`, les chemins relatifs ne se résoudront pas, car Claude Code télécharge uniquement ce fichier. Pour la distribution basée sur les URL, utilisez plutôt une autre [source de plugin](#plugin-sources). Voir [Dépannage](#plugins-with-relative-paths-fail-in-url-based-marketplaces) pour plus de détails.

327</Note>

328 

329<h3 id="github-repositories">

330 Dépôts GitHub

331</h3>

332 

333```json theme={null}

334{

335 "name": "github-plugin",

336 "source": {

337 "source": "github",

338 "repo": "owner/plugin-repo"

339 }

340}

341```

342 

343Vous pouvez épingler à une branche, un tag ou un commit spécifique :

344 

345```json theme={null}

346{

347 "name": "github-plugin",

348 "source": {

349 "source": "github",

350 "repo": "owner/plugin-repo",

351 "ref": "v2.0.0",

352 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

353 }

354}

355```

356 

357| Champ | Type | Description |

358| :----- | :----- | :--------------------------------------------------------------------------------------- |

359| `repo` | string | Obligatoire. Dépôt GitHub au format `owner/repo` |

360| `ref` | string | Optionnel. Branche ou tag Git (par défaut la branche par défaut du dépôt) |

361| `sha` | string | Optionnel. SHA de commit git complet de 40 caractères pour épingler à une version exacte |

362 

363<h3 id="git-repositories">

364 Dépôts Git

365</h3>

366 

367```json theme={null}

368{

369 "name": "git-plugin",

370 "source": {

371 "source": "url",

372 "url": "https://gitlab.com/team/plugin.git"

373 }

374}

375```

376 

377Vous pouvez épingler à une branche, un tag ou un commit spécifique :

378 

379```json theme={null}

380{

381 "name": "git-plugin",

382 "source": {

383 "source": "url",

384 "url": "https://gitlab.com/team/plugin.git",

385 "ref": "main",

386 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

387 }

388}

389```

390 

391| Champ | Type | Description |

392| :---- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

393| `url` | string | Obligatoire. URL complète du dépôt git (`https://` ou `git@`). Le suffixe `.git` est optionnel, donc les URL Azure DevOps et AWS CodeCommit sans le suffixe fonctionnent |

394| `ref` | string | Optionnel. Branche ou tag Git (par défaut la branche par défaut du dépôt) |

395| `sha` | string | Optionnel. SHA de commit git complet de 40 caractères pour épingler à une version exacte |

396 

397<h3 id="git-subdirectories">

398 Sous-répertoires Git

399</h3>

400 

401Utilisez `git-subdir` pour pointer vers un plugin qui se trouve dans un sous-répertoire d'un dépôt git. Claude Code utilise un clone partiel et clairsemé pour récupérer uniquement le sous-répertoire, minimisant la bande passante pour les grands monodépôts.

402 

403```json theme={null}

404{

405 "name": "my-plugin",

406 "source": {

407 "source": "git-subdir",

408 "url": "https://github.com/acme-corp/monorepo.git",

409 "path": "tools/claude-plugin"

410 }

411}

412```

413 

414Vous pouvez épingler à une branche, un tag ou un commit spécifique :

415 

416```json theme={null}

417{

418 "name": "my-plugin",

419 "source": {

420 "source": "git-subdir",

421 "url": "https://github.com/acme-corp/monorepo.git",

422 "path": "tools/claude-plugin",

423 "ref": "v2.0.0",

424 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

425 }

426}

427```

428 

429Le champ `url` accepte également un raccourci GitHub (`owner/repo`) ou des URL SSH (`git@github.com:owner/repo.git`).

430 

431| Champ | Type | Description |

432| :----- | :----- | :-------------------------------------------------------------------------------------------------------------- |

433| `url` | string | Obligatoire. URL du dépôt Git, raccourci GitHub `owner/repo` ou URL SSH |

434| `path` | string | Obligatoire. Chemin du sous-répertoire dans le dépôt contenant le plugin (par exemple, `"tools/claude-plugin"`) |

435| `ref` | string | Optionnel. Branche ou tag Git (par défaut la branche par défaut du dépôt) |

436| `sha` | string | Optionnel. SHA de commit git complet de 40 caractères pour épingler à une version exacte |

437 

438<h3 id="npm-packages">

439 Paquets npm

440</h3>

441 

442Une source npm peut nommer n'importe quel paquet du registre npm public ou d'un registre privé que votre équipe héberge. Claude Code résout le paquet avec votre client npm, télécharge la tarball et la déplie dans le cache de plugin.

443 

444Les scripts d'installation du paquet, tels que `preinstall` ou `postinstall`, ne s'exécutent jamais, et ses dépendances ne sont pas installées lors de la récupération.

445 

446Si le paquet expédie un fichier de verrouillage pris en charge à côté de son `package.json`, Claude Code installe ces [dépendances de paquet Node.js](/docs/fr/plugins-reference#node-js-package-dependencies) dans une étape séparée, également avec les scripts désactivés. Sinon, publiez le plugin avec tout ce dont il a besoin déjà construit. Un serveur MCP qui a besoin d'autres paquets peut se lancer via `npx`, qui les installe à la première exécution.

447 

448```json theme={null}

449{

450 "name": "my-npm-plugin",

451 "source": {

452 "source": "npm",

453 "package": "@acme/claude-plugin"

454 }

455}

456```

457 

458Pour épingler à une version spécifique, ajoutez le champ `version` :

459 

460```json theme={null}

461{

462 "name": "my-npm-plugin",

463 "source": {

464 "source": "npm",

465 "package": "@acme/claude-plugin",

466 "version": "2.1.0"

467 }

468}

469```

470 

471Pour installer à partir d'un registre privé ou interne, ajoutez le champ `registry` :

472 

473```json theme={null}

474{

475 "name": "my-npm-plugin",

476 "source": {

477 "source": "npm",

478 "package": "@acme/claude-plugin",

479 "version": "^2.0.0",

480 "registry": "https://npm.example.com"

481 }

482}

483```

484 

485| Champ | Type | Description |

486| :--------- | :----- | :---------------------------------------------------------------------------------------------------------- |

487| `package` | string | Obligatoire. Nom du paquet ou paquet scopé (par exemple, `@org/plugin`) |

488| `version` | string | Optionnel. Version ou plage de version (par exemple, `2.1.0`, `^2.0.0`, `~1.5.0`) |

489| `registry` | string | Optionnel. URL du registre npm personnalisé. Par défaut le registre npm du système (généralement npmjs.org) |

490 

491<h3 id="zip-archives">

492 Archives zip

493</h3>

494 

495Utilisez `archive` pour distribuer un plugin en tant que fichier zip que Claude Code télécharge via HTTPS, afin que les installations fonctionnent sans git ou npm sur la machine de l'utilisateur. Hébergez le fichier sur n'importe quel serveur de fichiers statiques ou référentiel d'artefacts, tel qu'un bucket S3, un référentiel générique Artifactory ou nginx. Nécessite Claude Code v2.1.224 ou ultérieur. Sur les versions v2.1.120 à v2.1.223, l'installation du plugin échoue avec `This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again.` ; sur les versions plus anciennes, une place de marché contenant une entrée `archive` ne se charge pas du tout.

496 

497Cette entrée installe le plugin à partir d'un fichier zip sur un serveur d'artefacts :

498 

499```json theme={null}

500{

501 "name": "my-plugin",

502 "source": {

503 "source": "archive",

504 "url": "https://artifacts.example.com/claude-plugins/my-plugin-2.1.0.zip"

505 }

506}

507```

508 

509Lorsque vous créez le zip, vous pouvez zipper le contenu du plugin directement ou zipper le dossier du plugin lui-même. Claude Code recherche `.claude-plugin/` en haut de l'archive, puis à l'intérieur d'un seul dossier de niveau supérieur, donc les deux dispositions s'installent :

510 

511```text theme={null}

512my-plugin.zip my-plugin.zip

513├── .claude-plugin/ └── my-plugin/

514│ └── plugin.json ├── .claude-plugin/

515└── commands/ │ └── plugin.json

516 └── commands/

517```

518 

519Claude Code ne cherche pas plus profondément qu'un dossier, donc un plugin imbriqué plus loin ne s'installe pas. Claude Code refuse les archives plus grandes que 256 MiB.

520 

521Pour épingler le fichier exact, ajoutez un champ `sha256` avec le digest de l'archive :

522 

523```json theme={null}

524{

525 "name": "my-plugin",

526 "source": {

527 "source": "archive",

528 "url": "https://artifacts.example.com/claude-plugins/my-plugin-2.1.0.zip",

529 "sha256": "6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1"

530 }

531}

532```

533 

534Si le fichier téléchargé ne correspond pas à l'épingle, Claude Code refuse l'installation et signale [`Plugin archive integrity check failed`](/docs/fr/errors#plugin-archive-integrity-check-failed).

535 

536Les sources d'archive acceptent ces champs :

537 

538| Champ | Type | Description |

539| :------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

540| `url` | string | Obligatoire. URL HTTPS de l'archive zip. Claude Code rejette les URL `http://`, ainsi que les hôtes de bouclage, lien-local et métadonnées cloud. Chaque saut de redirection doit satisfaire les mêmes règles, ou Claude Code refuse le téléchargement |

541| `sha256` | string | Optionnel. Digest SHA-256 de l'archive en tant que 64 caractères hexadécimaux, majuscules ou minuscules. Claude Code vérifie chaque téléchargement par rapport à celui-ci et refuse l'installation en cas de non-correspondance |

542 

543Le digest `sha256` sert également de version du plugin lorsque ni `plugin.json` ni l'entrée de la place de marché n'en déclare une. Voir [Gestion des versions](/docs/fr/plugins-reference#version-management). Si vous déclarez une `version`, cette chaîne de version est le signal de mise à jour, donc après avoir modifié le zip et son digest, augmentez également la version, ou les utilisateurs conservent la copie en cache.

544 

545<h4 id="authenticate-archive-downloads">

546 Authentifier les téléchargements d'archive

547</h4>

548 

549Pour authentifier un téléchargement d'archive, tel qu'un téléchargement à partir d'un registre privé, définissez les en-têtes HTTP que Claude Code envoie avec celui-ci. Définissez `headers` sur la source `url` à partir de laquelle vous avez enregistré la place de marché, tel qu'une entrée [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces). Sur Claude Code v2.1.238 ou ultérieur, vous pouvez le définir sur l'entrée du plugin à la place, à côté de `source`.

550 

551Si la valeur que vous mettriez dans `headers` est de courte durée, tel qu'un jeton que votre registre crée à la demande, définissez plutôt une commande `headersHelper` au même endroit. Claude Code exécute la commande et envoie l'objet JSON qu'elle imprime en tant que headers de cet endroit. Nécessite Claude Code v2.1.238 ou ultérieur.

552 

553L'endroit que vous choisissez décide quels téléchargements obtiennent les en-têtes et quand Claude Code exécute la commande :

554 

555| Endroit | Téléchargements qui obtiennent les en-têtes | Quand Claude Code exécute un `headersHelper` défini là |

556| :--------------------------------- | :------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

557| Source `url` de la place de marché | Téléchargements d'archive sur l'origine de l'URL de la place de marché, ce qui signifie le même schéma, hôte et port | Avant chaque récupération du `marketplace.json` de la place de marché et avant chaque téléchargement d'archive sur cette origine. Claude Code réutilise la sortie d'une exécution pendant jusqu'à 60 secondes |

558| Entrée de plugin | Uniquement le téléchargement de cette entrée | Uniquement lorsqu'un utilisateur installe ou met à jour ce seul plugin par lui-même et [accepte la commande](#how-users-accept-a-headershelper-command) |

559 

560Lorsque les deux endroits définissent un en-tête du même nom, Claude Code envoie la valeur de l'entrée. Au sein d'un endroit, un en-tête que la commande imprime remplace un en-tête du même nom répertorié dans `headers`.

561 

562<h5 id="add-a-headershelper-to-a-plugin-entry">

563 Ajouter un headersHelper à une entrée de plugin

564</h5>

565 

566Cette entrée définit `headersHelper` à côté de `source`. Elle définit également `"strict": false`, que Claude Code exige d'une entrée `marketplace.json` qui définit `headersHelper`. Avec [`"strict": false`](#strict-mode), l'entrée de la place de marché est la définition complète du plugin, afin qu'un utilisateur puisse examiner ce que le plugin contient avant d'accepter la commande :

567 

568```json theme={null}

569{

570 "name": "my-plugin",

571 "description": "Formatting commands for internal services",

572 "strict": false,

573 "commands": "./commands",

574 "source": {

575 "source": "archive",

576 "url": "https://registry.example.com/plugins/my-plugin-2.1.0.zip"

577 },

578 "headersHelper": "/opt/bin/mint-registry-token.sh"

579}

580```

581 

582Pour vérifier l'entrée, exécutez `claude plugin install my-plugin@your-marketplace`. Claude Code vous montre la commande et l'URL de l'archive, et télécharge le zip après que vous acceptiez.

583 

584Avant v2.1.238, Claude Code téléchargeait l'archive d'une entrée sans ses `headers` ou `headersHelper`, donc une installation qui en dépendait échouait avec `HTTP 401 while downloading plugin archive from`, suivi de l'URL, avec le code d'état du registre à la place de 401.

585 

586<h4 id="write-the-headershelper-command">

587 Écrire la commande headersHelper

588</h4>

589 

590Que vous définissiez `headersHelper` sur la source `url` d'une place de marché ou sur une entrée de plugin, écrivez la commande pour répondre à ces exigences :

591 

592* **Texte de commande** : au maximum 500 caractères ASCII imprimables, sans suite de quatre espaces ou plus.

593* **Sortie** : imprimez un objet JSON de noms d'en-têtes et de valeurs de chaîne sur stdout, puis quittez 0 dans les 10 secondes.

594* **Shell et répertoire de travail** : Claude Code exécute la commande via `sh`, ou `cmd.exe` sur Windows, à partir du répertoire de configuration, `~/.claude` ou [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars#variables). Donnez un chemin absolu ou une commande sur `PATH`, car un chemin relatif se résout par rapport à ce répertoire, pas au projet de l'utilisateur.

595* **Variables que Claude Code supprime** : de l'environnement d'une commande définie dans une entrée `marketplace.json` ou dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet, Claude Code supprime chaque variable dont le nom contient un mot tel que `TOKEN`, `SECRET`, `KEY` ou `AUTH`, y compris `ANTHROPIC_API_KEY`. Claude Code n'applique pas cette suppression à une commande définie dans les paramètres utilisateur, un fichier `--settings` ou les paramètres gérés.

596* **Variables que Claude Code définit** : `CLAUDE_CODE_MARKETPLACE_URL` et `CLAUDE_CODE_MARKETPLACE_NAME` pour la commande d'une source `url`, et `CLAUDE_CODE_PLUGIN_NAME` et `CLAUDE_CODE_PLUGIN_ARCHIVE_URL` pour la commande d'une entrée. `CLAUDE_CODE_MARKETPLACE_NAME` n'est pas défini lors de la première récupération après qu'un utilisateur ajoute une place de marché par URL, car cette récupération est ce qui fournit le nom.

597 

598Une commande qui crée un jeton porteur imprime un objet comme celui-ci :

599 

600```json theme={null}

601{"Authorization": "Bearer eyJhbGciOiJSUzI1NiJ9"}

602```

603 

604<h4 id="when-claude-code-skips-a-headershelper-command-or-drops-its-output">

605 Quand Claude Code ignore une commande headersHelper ou abandonne sa sortie

606</h4>

607 

608Claude Code n'exécute pas une commande `headersHelper`, ou abandonne les en-têtes qui proviennent de `headers` ou de la sortie de la commande, dans ces situations :

609 

610* **La commande échoue** : si la commande quitte non-zéro, s'exécute au-delà de 10 secondes ou imprime autre chose qu'un objet JSON de valeurs de chaîne, Claude Code ne fait pas la récupération ou le téléchargement pour lequel il a exécuté la commande.

611* **L'URL de la place de marché ne commence pas par `https://`** : Claude Code n'exécute pas la commande de cette source `url` et envoie uniquement les en-têtes répertoriés dans son champ `headers`.

612* **La redirection quitte l'origine** : lorsqu'un téléchargement est redirigé hors de l'origine de l'URL de l'archive, Claude Code abandonne les valeurs `headers` et la sortie de la commande de la source `url` de la place de marché et de l'entrée de plugin.

613* **L'entrée définit un en-tête de routage ou d'identité** : Claude Code abandonne les noms de routage de requête et d'identité client tels que `Host`, `Cookie` et `X-Forwarded-*` de l'entrée `headers` et de la sortie de la commande, et conserve les noms d'authentification tels que `Authorization`. Claude Code filtre chaque entrée `marketplace.json` de cette façon, et une [entrée de paramètres en ligne](/docs/fr/settings-reference#extraknownmarketplaces) selon le fichier qui la déclare.

614* **La commande est définie dans les paramètres d'un répertoire `--add-dir`** : Claude Code l'ignore, sur une source `url` et sur une [entrée de plugin en ligne](/docs/fr/settings-reference#extraknownmarketplaces) de même, et envoie uniquement les `headers` de ce fichier.

615* **Les paramètres gérés bloquent la commande** : définir [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources) sur `true` bloque les commandes `headersHelper`, et [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) les bloque aussi sauf si `disableCommandPluginSources` est explicitement `false`. Sous l'un ou l'autre bloc, Claude Code exécute toujours la commande pour une place de marché que les paramètres gérés eux-mêmes déclarent.

616 

617<h4 id="how-users-accept-a-headershelper-command">

618 Comment les utilisateurs acceptent une commande headersHelper

619</h4>

620 

621Un utilisateur accepte la commande d'une entrée de plugin chaque fois qu'il installe ou met à jour ce seul plugin par lui-même, à partir de la vue propre du plugin dans `/plugin` ou avec `claude plugin install` ou `claude plugin update`. Claude Code montre la commande et l'URL de l'archive, et exécute la commande uniquement après que l'utilisateur accepte.

622 

623Dans un shell non-interactif, passez [`--yes`](/docs/fr/plugins-reference#plugin-install) pour accepter la commande. Pour accepter uniquement la commande qu'une exécution précédente `--json` a affichée, passez [`--accept-command`](/docs/fr/plugins-reference#plugin-install) avec le `sha256` que l'exécution a signalé.

624 

625Claude Code exécute uniquement la commande qu'il a montrée, pour l'URL d'archive qu'il a montrée. Si la commande ou l'URL d'archive de l'entrée a changé entre-temps, Claude Code refuse l'installation ou la mise à jour. Un changement dans la chaîne de requête seul ne compte pas.

626 

627<h5 id="installs-and-updates-that-refuse-the-command-instead-of-asking">

628 Installations et mises à jour qui refusent la commande au lieu de demander

629</h5>

630 

631Sur toute opération autre qu'une installation ou mise à jour d'un seul plugin, Claude Code n'exécute pas la commande d'une entrée ni ne télécharge son archive, donc le plugin reste à sa version installée ou reste désinstallé. Ce que l'utilisateur voit dépend de l'opération :

632 

633* **Installation de plusieurs plugins à la fois, à partir d'une suggestion de plugin ou en tant que dépendance d'un autre plugin** : Claude Code refuse le plugin qui a la commande et pointe l'utilisateur vers la vue propre de ce plugin dans `/plugin`. Les autres plugins dans une installation en masse s'installent toujours. Un plugin qui dépend du plugin refusé ne s'installe pas jusqu'à ce que l'utilisateur installe le plugin refusé par lui-même.

634* **Mise à jour automatique en arrière-plan, ou démarrage de session pour un plugin dont l'archive n'a jamais été téléchargée** : Claude Code répertorie le plugin dans l'onglet `/plugin` Erreurs afin que l'utilisateur sache l'installer ou le mettre à jour à la main. Une mise à jour automatique qui trouve l'entrée annonce toujours la version installée répertorie rien.

635 

636<h5 id="when-a-marketplace-url-source’s-command-runs">

637 Quand la commande de la source `url` de la place de marché s'exécute

638</h5>

639 

640Un `headersHelper` de source `url` de place de marché est déclaré dans un fichier de paramètres, tel qu'une entrée [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces), plutôt que dans le catalogue que la place de marché publie, donc Claude Code ne demande pas à l'utilisateur de l'accepter à chaque installation ou mise à jour. Le fichier de paramètres qui le déclare décide quand Claude Code l'exécute :

641 

642| Fichier de paramètres | Quand Claude Code exécute la commande |

643| :----------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

644| Paramètres utilisateur, un fichier `--settings` ou un fichier de paramètres gérés sur la machine | Sans demander, y compris lors d'une actualisation de place de marché en arrière-plan |

645| Le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet | Uniquement après que l'utilisateur accepte la [boîte de dialogue de confiance de l'espace de travail](/docs/fr/permissions#what-runs-before-you-trust-a-folder) pour ce dossier lui-même. Une session `-p` ou SDK ne compte pas comme l'accepter, et la confiance accordée à un dossier parent non plus |

646| Paramètres gérés par le serveur | Uniquement après que l'utilisateur approuve les paramètres livrés dans la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) |

647 

648Dans une session `-p` ou SDK, Claude Code ne peut pas afficher la boîte de dialogue d'approbation de sécurité. Il applique les autres paramètres livrés, mais la récupération de la place de marché, et tout téléchargement d'archive qui a besoin de la commande, échoue jusqu'à ce qu'un utilisateur ait approuvé dans une session interactive.

649 

650Pour une [entrée de plugin en ligne](/docs/fr/settings-reference#extraknownmarketplaces) dans l'un de ces fichiers, Claude Code exige la même confiance de dossier ou approbation de paramètres que pour une commande au niveau de la place de marché dans ce fichier, et l'utilisateur accepte également la commande de l'entrée à chaque installation ou mise à jour.

651 

652<h3 id="command-sources">

653 Sources de commande

654</h3>

655 

656Utilisez `command` lorsqu'un outil installé localement produit le répertoire de plugin, tel qu'un IDE qui rend son plugin pour la chaîne d'outils actuellement sélectionnée. Claude Code exécute la commande lorsque l'utilisateur installe le plugin et la réexécute en arrière-plan une fois par session, afin que vos utilisateurs récupèrent la sortie modifiée de l'outil sans réinstaller. Nécessite Claude Code v2.1.229 ou ultérieur. Sur v2.1.120 à v2.1.228, l'installation du plugin échoue avec `This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again.`, et sur les versions plus anciennes la place de marché entière ne se charge pas.

657 

658Cette entrée installe le plugin à partir de quel que soit le répertoire que l'outil imprime :

659 

660```json theme={null}

661{

662 "name": "my-plugin",

663 "source": {

664 "source": "command",

665 "command": "my-tool claude-plugin-path"

666 }

667}

668```

669 

670Claude Code exécute la commande via le shell de la plateforme, `sh` sur macOS et Linux ou `cmd.exe` sur Windows, à partir du répertoire personnel de l'utilisateur. La commande doit imprimer exactement une ligne sur stdout et quitter avec le code 0. Cette ligne est le chemin absolu d'un répertoire qui contient le plugin complet au moment où la commande quitte, et le chemin peut changer entre les exécutions.

671 

672Claude Code arrête une commande qui s'exécute plus longtemps que `timeout` secondes, et l'installation ou la mise à jour échoue. Claude Code refuse également le chemin imprimé dans ces cas, et l'installation ou la mise à jour échoue de la même manière :

673 

674* Le répertoire n'a pas de contenu de plugin à son niveau supérieur, tel qu'un répertoire `.claude-plugin/` ou un répertoire `skills/`, `commands/`, `agents/` ou `hooks/`

675* Le répertoire est celui dans lequel Claude Code a été démarré, ou l'un de ses parents

676* Sur Windows, le chemin est un chemin UNC

677 

678Les sources de commande acceptent ces champs :

679 

680| Champ | Type | Description |

681| :-------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

682| `command` | string | Obligatoire. Commande shell qui imprime le chemin absolu du répertoire de plugin en tant que ligne unique sur stdout et quitte 0. Doit être ASCII imprimable, au maximum 500 caractères, sans suite de quatre espaces ou plus, afin que les utilisateurs puissent examiner la commande entière qu'on leur demande d'accepter |

683| `timeout` | number | Optionnel. Nombre entier de secondes à attendre la commande avant d'abandonner (par défaut : 60, maximum : 600) |

684| `mode` | string | Optionnel. `"copy"` (par défaut) copie le répertoire imprimé dans le cache de plugin. `"link"` utilise le répertoire imprimé à la place. Voir [Mode copie et mode lien](#copy-mode-and-link-mode) |

685 

686<h4 id="copy-mode-and-link-mode">

687 Mode copie et mode lien

688</h4>

689 

690Avec le `"mode": "copy"` par défaut, Claude Code copie le répertoire imprimé dans le cache de plugin versionné et dérive la [version du plugin](/docs/fr/plugins-reference#version-management) d'un hash du contenu du répertoire. Votre outil peut supprimer ou réécrire le répertoire après que la commande quitte, et une réexécution qui produit un contenu identique compte comme à jour. Claude Code refuse d'installer un répertoire plus grand que 256 MiB ou contenant plus de 20 000 entrées.

691 

692Définissez `"mode": "link"` pour les grands répertoires de plugin qui ne doivent pas être copiés, tel qu'une exportation SDK rendue. Claude Code remplit l'entrée de cache du plugin avec un lien vers chaque entrée de niveau supérieur du répertoire imprimé et utilise les fichiers à la place, donc rien n'est copié, les contenus de fichiers ne sont pas hashés, et les limites de taille ne s'appliquent pas. L'installation échoue si une entrée de niveau supérieur est un lien symbolique qui pointe en dehors du répertoire imprimé. Claude Code ignore également l'[installation de dépendance de paquet Node.js](/docs/fr/plugins-reference#node-js-package-dependencies) pour un plugin en mode lien, donc imprimez un répertoire qui contient déjà tout `node_modules` dont le plugin a besoin.

693 

694Gardez le répertoire imprimé en place tant que le plugin reste installé, car Claude Code charge le plugin via ces liens à chaque démarrage. Claude Code dérive la [version du plugin](/docs/fr/plugins-reference#version-management) du chemin réel du répertoire imprimé et de ses entrées de niveau supérieur, pas des fichiers à l'intérieur, donc imprimez un chemin différent pour signaler un nouveau contenu. Dans une session démarrée dans le répertoire imprimé ou n'importe où en dessous, Claude Code ne charge pas du tout le plugin.

695 

696Claude Code ne prend pas en charge le mode lien sur Windows et refuse d'installer un plugin en mode lien là. Déclarez `"mode": "copy"` à la place.

697 

698<h4 id="how-users-accept-the-command">

699 Comment les utilisateurs acceptent la commande

700</h4>

701 

702Claude Code exécute votre commande sur la machine de l'utilisateur, donc il lie chaque exécution à l'acceptation explicite de l'utilisateur :

703 

704* Lorsque les utilisateurs installent le plugin à partir de son écran de détails dans `/plugin`, ou l'installent ou le mettent à jour avec `claude plugin install` ou `claude plugin update` dans un terminal interactif, Claude Code leur montre d'abord la chaîne de commande exacte et enregistre la commande acceptée pour cette installation. Une `claude plugin update` qui peut procéder sur l'acceptation enregistrée de la même commande ne montre rien.

705* Dans un shell non-interactif, tel qu'un script de provisionnement, passez `--yes` à `claude plugin install` ou `claude plugin update` pour accepter la commande qu'il imprime. Pour accepter uniquement la commande qu'une exécution précédente `--json` a affichée, passez [`--accept-command`](/docs/fr/plugins-reference#plugin-install) avec le `sha256` que l'exécution a signalé.

706* Chaque autre chemin exécute uniquement la commande que l'utilisateur a déjà acceptée. Cela inclut les mises à jour démarrées à partir de `/plugin` et les exécutions en arrière-plan décrites dans [Quand Claude Code réexécute la commande](#when-claude-code-re-runs-the-command). Lorsqu'aucune n'a été acceptée, Claude Code refuse d'exécuter la commande et dit à l'utilisateur comment l'examiner. Claude Code n'installe jamais un plugin provenant d'une source de commande en tant que dépendance d'un autre plugin, afin que les utilisateurs l'installent eux-mêmes d'abord.

707* Si vous modifiez la `command` de l'entrée, ou basculez son `mode`, les utilisateurs conservent la version qu'ils ont déjà et Claude Code arrête de réexécuter la commande. Dans les sessions interactives, l'onglet `/plugin` Erreurs montre la nouvelle commande jusqu'à ce que l'utilisateur l'examine et l'accepte en exécutant `claude plugin update <plugin>@<marketplace>`.

708 

709Les administrateurs peuvent bloquer les sources de commande dans une organisation avec le paramètre géré [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources). Si une organisation définit [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly), Claude Code bloque les sources de commande par défaut.

710 

711<h4 id="when-claude-code-re-runs-the-command">

712 Quand Claude Code réexécute la commande

713</h4>

714 

715Le répertoire imprimé reflète l'état de l'outil au moment où la commande s'est exécutée, donc Claude Code exécute la commande à nouveau à ces moments :

716 

717* Chaque fois que l'utilisateur installe ou met à jour le plugin

718* Une fois par session pour chaque plugin provenant d'une source de commande activée, en arrière-plan, peu de temps après le démarrage de la session. Cette exécution ne passe pas par la mise à jour automatique de la place de marché, donc elle ne dépend pas du [paramètre de mise à jour automatique](/docs/fr/discover-plugins#configure-auto-updates) de la place de marché

719* Au démarrage ou sur `/reload-plugins`, lorsque la version installée d'un plugin activé est manquante du cache de plugin

720 

721Claude Code ignore les deux exécutions en arrière-plan lorsque l'utilisateur définit [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars). Les installations et mises à jour explicites exécutent toujours la commande avec cette variable définie.

722 

723Lorsque la sortie hashée de la commande a changé, Claude Code installe le résultat en tant que nouvelle version et la recharge dans la session interactive en cours, basculant [les mêmes composants que `/reload-plugins` bascule](/docs/fr/plugins-reference#environment-variables). L'utilisateur voit une notification que le plugin a été rechargé. Si le rechargement sur place invaliderait le cache d'invite de la session, Claude Code invite plutôt l'utilisateur à exécuter `/reload-plugins`, qui [avertit du coût du cache et s'applique lorsqu'il est réexécuté avec `--force`](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin).

724 

725<h3 id="advanced-plugin-entries">

726 Entrées de plugin avancées

727</h3>

728 

729Cet exemple montre une entrée de plugin utilisant de nombreux champs optionnels, notamment des chemins personnalisés pour les commandes, les agents, les hooks et les serveurs MCP :

730 

731```json theme={null}

732{

733 "name": "enterprise-tools",

734 "source": {

735 "source": "github",

736 "repo": "company/enterprise-plugin"

737 },

738 "description": "Enterprise workflow automation tools",

739 "version": "2.1.0",

740 "author": {

741 "name": "Enterprise Team",

742 "email": "enterprise@example.com"

743 },

744 "homepage": "https://docs.example.com/plugins/enterprise-tools",

745 "repository": "https://github.com/company/enterprise-plugin",

746 "license": "MIT",

747 "keywords": ["enterprise", "workflow", "automation"],

748 "category": "productivity",

749 "commands": [

750 "./commands/core/",

751 "./commands/enterprise/",

752 "./commands/experimental/preview.md"

753 ],

754 "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],

755 "hooks": {

756 "PostToolUse": [

757 {

758 "matcher": "Write|Edit",

759 "hooks": [

760 {

761 "type": "command",

762 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"

763 }

764 ]

765 }

766 ]

767 },

768 "mcpServers": {

769 "enterprise-db": {

770 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

771 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]

772 }

773 },

774 "strict": false

775}

776```

777 

778Points clés à noter :

779 

780* **`commands` et `agents`** : vous pouvez spécifier plusieurs répertoires ou fichiers individuels. Les chemins sont relatifs à la racine du plugin et doivent rester à l'intérieur.

781 * Claude Code rejette un chemin qui se résout en dehors du répertoire de plugin, tel que `./../shared.md`, avec une erreur [`path escapes plugin directory`](/docs/fr/errors#path-escapes-plugin-directory), et charge toujours le plugin sans ce composant

782* **`${CLAUDE_PLUGIN_ROOT}`** : utilisez cette variable dans les commandes de hook et les configurations du serveur MCP pour référencer les fichiers dans le répertoire d'installation du plugin.

783 * Consultez le [tableau de substitution](/docs/fr/plugins-reference#environment-variables) pour savoir quels champs de configuration le substituent par type de serveur

784 * Pour les dépendances ou l'état qui doivent survivre aux mises à jour des plugins, utilisez [`${CLAUDE_PLUGIN_DATA}`](/docs/fr/plugins-reference#persistent-data-directory) à la place

785* **`strict: false`** : puisque ceci est défini sur false, le plugin n'a pas besoin de son propre `plugin.json`. L'entrée de la place de marché définit tout. Voir [Mode strict](#strict-mode) ci-dessous.

786 

787Par défaut, les compétences d'un plugin se chargent à partir du répertoire `skills/` sous sa `source`. Les chemins répertoriés dans le champ `skills` s'ajoutent à cette analyse :

788 

789```json theme={null}

790"skills": ["./skills/", "./extra-skills/"]

791```

792 

793Lorsque plusieurs entrées de plugin partagent un dossier `skills/` à la racine de la place de marché (`source: "./"`), énumérez plutôt des sous-répertoires spécifiques afin que chaque entrée ne charge que ses propres compétences :

794 

795```json theme={null}

796"source": "./",

797"skills": ["./skills/code-review", "./skills/docs"]

798```

799 

800Avec une source à la racine de la place de marché, les chemins énumérés constituent l'ensemble complet pour cette entrée, et les autres répertoires dans le dossier `skills/` partagé ne se chargent pas. L'énumération du répertoire `skills/` lui-même, ou de la racine du plugin, maintient l'analyse complète. Si aucun des chemins énumérés n'existe, l'analyse par défaut s'exécute à la place.

801 

802<h3 id="strict-mode">

803 Mode strict

804</h3>

805 

806Le champ `strict` contrôle si `plugin.json` est l'autorité pour les définitions de composants (compétences, agents, hooks, serveurs MCP, styles de sortie).

807 

808| Valeur | Comportement |

809| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

810| `true` (par défaut) | `plugin.json` est l'autorité. L'entrée de la place de marché peut la compléter avec des composants supplémentaires, et les deux sources sont fusionnées. |

811| `false` | L'entrée de la place de marché est la définition complète. Si le plugin a également un `plugin.json` qui déclare des composants, c'est un conflit et le plugin ne se charge pas. |

812 

813**Quand utiliser chaque mode :**

814 

815* **`strict: true`** : le plugin a son propre `plugin.json` et gère ses propres composants. L'entrée de la place de marché peut ajouter des compétences ou des hooks supplémentaires par-dessus. C'est la valeur par défaut et fonctionne pour la plupart des plugins.

816* **`strict: false`** : l'opérateur de la place de marché veut le contrôle total. Le dépôt du plugin fournit des fichiers bruts, et l'entrée de la place de marché définit lesquels de ces fichiers sont exposés en tant que compétences, agents, hooks, etc. Utile lorsque la place de marché restructure ou sélectionne les composants d'un plugin différemment de ce que l'auteur du plugin avait prévu.

817 

818<h2 id="host-and-distribute-marketplaces">

819 Héberger et distribuer les places de marché

820</h2>

821 

822Lorsque les utilisateurs ajoutent une place de marché hébergée dans un dépôt git, ou installent un plugin basé sur git qu'elle liste, Claude Code clone ce dépôt de place de marché ou de plugin sur leur machine. Le clone ne télécharge jamais le contenu de [Git LFS](https://git-lfs.com), donc les fichiers suivis par LFS arrivent sous forme de fichiers pointeurs. Gardez les fichiers dont vos plugins ont besoin en dehors de LFS.

823 

824<h3 id="host-on-github-recommended">

825 Héberger sur GitHub (recommandé)

826</h3>

827 

828GitHub est la méthode recommandée pour héberger et distribuer une place de marché :

829 

8301. **Créer un dépôt** : Configurez un nouveau dépôt pour votre place de marché

8312. **Ajouter le fichier de place de marché** : Créez `.claude-plugin/marketplace.json` avec vos définitions de plugins

8323. **Partager avec les équipes** : Les utilisateurs ajoutent votre place de marché avec `/plugin marketplace add owner/repo`

833 

834**Avantages** : Contrôle de version intégré, suivi des problèmes et fonctionnalités de collaboration d'équipe.

835 

836<h3 id="host-on-other-git-services">

837 Héberger sur d'autres services git

838</h3>

839 

840N'importe quel service d'hébergement git fonctionne, comme GitLab, Bitbucket et les serveurs auto-hébergés. Les utilisateurs ajoutent avec l'URL complète du dépôt :

841 

842```shell theme={null}

843/plugin marketplace add https://gitlab.com/company/plugins.git

844```

845 

846<h3 id="private-repositories">

847 Dépôts privés

848</h3>

849 

850Claude Code prend en charge l'installation de plugins à partir de dépôts privés. Si vous distribuez votre place de marché via [**Paramètres de l'organisation > Plugins**](https://claude.ai/admin-settings/plugins) à la place, vos credentials git ne sont pas impliqués : la synchronisation de l'organisation lit le dépôt de la place de marché via votre connexion GitHub ou GitLab de l'organisation sur claude.ai. Consultez [Distribuer via les paramètres de l'organisation](#distribute-through-organization-settings) pour les sources de plugins qui peuvent être privées.

851 

852<h4 id="commands-you-run">

853 Commandes que vous exécutez

854</h4>

855 

856Lorsque vous exécutez `/plugin marketplace add`, `/plugin install`, `/plugin update` ou `/plugin marketplace update`, Claude Code utilise vos assistants de credentials git existants, donc l'accès HTTPS via `gh auth login`, Keychain macOS ou `git-credential-store` fonctionne de la même manière que dans votre terminal. L'accès SSH fonctionne tant que l'hôte est déjà dans votre fichier `known_hosts` et que la clé est chargée dans `ssh-agent`, puisque Claude Code supprime les invites SSH interactives pour l'empreinte digitale de l'hôte et la phrase de passe de la clé. Les sources de raccourci `owner/repo` GitHub clonent par défaut via SSH ; définissez [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/fr/env-vars#variables) pour les cloner via HTTPS à la place.

857 

858<h4 id="background-auto-updates">

859 Mises à jour automatiques en arrière-plan

860</h4>

861 

862La vérification d'actualisation en arrière-plan vérifie le dépôt distant de la place de marché pour les nouveaux commits avec vos assistants de credentials git configurés, de la même manière que les commandes que vous exécutez. Pour les remotes SSH, une clé chargée dans `ssh-agent` authentifie la vérification. Claude Code exécute la vérification de manière non-interactive : il désactive les invites de terminal de git et les programmes askpass, et indique aux assistants de credentials de ne pas inviter. Le fait que la vérification puisse s'authentifier auprès d'un dépôt privé sur HTTPS dépend de votre assistant :

863 

864* Un assistant qui peut fournir une credential stockée sans inviter authentifie la vérification. Git Credential Manager, l'assistant Keychain macOS et `git-credential-store` fonctionnent de cette manière une fois qu'ils détiennent une credential pour l'hôte.

865* Un assistant qui a besoin de vous inviter ne peut pas répondre en arrière-plan. La mise à jour échoue silencieusement et le checkout existant reste en place, donc vos plugins continuent de fonctionner à partir du dernier état synchronisé. Exécutez `/plugin marketplace update <name>` pour actualiser la place de marché avec vos credentials.

866 

867Lorsque la vérification trouve le checkout à jour, Claude Code le laisse tel quel. Lorsque la vérification trouve de nouveaux commits, ou échoue parce qu'elle ne peut pas atteindre ou s'authentifier auprès du dépôt distant, Claude Code clone la place de marché à nouveau et échange le nouveau clone. Si ce clone échoue, le checkout existant reste en place. Le re-clone peut [expirer sur les grands dépôts](#git-operations-time-out).

868 

869Deux paramètres rendent les places de marché privées prévisibles :

870 

871* Définissez `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` pour conserver le checkout existant sans tenter le re-clone lorsque la vérification en arrière-plan ne peut pas atteindre ou s'authentifier auprès du dépôt distant. Vos plugins continuent de fonctionner à partir du dernier état synchronisé, et les mises à jour manuelles avec `/plugin marketplace update` s'authentifient toujours avec vos credentials.

872* Configurez un assistant de credentials git, par exemple avec `gh auth setup-git` pour GitHub, afin que la vérification en arrière-plan et le re-clone puissent s'authentifier sans inviter.

873 

874Définir un jeton de fournisseur tel que `GITHUB_TOKEN` dans votre environnement n'active pas par lui-même l'authentification en arrière-plan. Les jetons ne prennent effet que via un assistant de credentials configuré, par exemple l'assistant de l'CLI `gh`, qui lit `GH_TOKEN` et `GITHUB_TOKEN`.

875 

876<Note>

877 Dans les environnements CI/CD, configurez un assistant de credentials git avant d'installer des plugins à partir de dépôts privés. Sur GitHub Actions, exportez un jeton avec accès en lecture au dépôt de la place de marché en tant que `GH_TOKEN`, puis exécutez `gh auth setup-git`. Le jeton de workflow par défaut ne peut accéder qu'au dépôt du workflow lui-même, donc une place de marché privée dans un autre dépôt a besoin d'un jeton d'accès personnel ou d'un jeton d'application.

878</Note>

879 

880<h3 id="distribute-through-organization-settings">

881 Distribuer via les paramètres de l'organisation

882</h3>

883 

884Si vous distribuez des plugins via [**Paramètres de l'organisation > Plugins**](https://claude.ai/admin-settings/plugins) sur un plan Team ou Enterprise, ces règles de source s'appliquent :

885 

886* Sur github.com et gitlab.com, le dépôt de la place de marché doit être privé ou interne. La synchronisation de l'organisation le lit via la connexion qui correspond à son hôte :

887 * **github.com** : l'application GitHub Claude

888 * **Votre hôte GitHub Enterprise Server** : votre [application GitHub Enterprise](/docs/fr/github-enterprise-server#admin-setup) de l'organisation

889 * **gitlab.com ou votre instance GitLab auto-gérée** : le jeton d'accès dans votre [configuration GitLab](#sync-a-gitlab-hosted-marketplace) de l'organisation pour cet hôte

890* Chaque source de plugin doit être de type `github`, `url` ou `git-subdir`, ou un [chemin relatif](#relative-paths) qui commence par `./`. Si vous listez un plugin par nom nu sous `metadata.pluginRoot`, la synchronisation de l'organisation le rejette comme source non prise en charge, donc écrivez le chemin, comme `./plugins/deploy-tools`.

891* Une source de plugin peut être privée dans trois cas :

892 * Une source github.com qui partage le propriétaire du dépôt de la place de marché

893 * Une source sur l'hôte GitHub Enterprise de votre organisation avec l'application GHE installée sur le dépôt

894 * Une source `url` ou `git-subdir` sur le même hôte GitLab que le dépôt de la place de marché. Sur gitlab.com, la source doit également être sous le même groupe de niveau supérieur ou espace de noms utilisateur que le dépôt de la place de marché.

895* Toute autre source de plugin doit être un dépôt public sur github.com, gitlab.com ou bitbucket.org, que la synchronisation de l'organisation récupère sans credentials. La synchronisation de l'organisation rejette les sources de plugins sur les hôtes que ces règles ne couvrent pas.

896 

897Consultez [Gérer les plugins pour votre organisation](https://support.claude.com/en/articles/13837433) pour le flux de travail administrateur.

898 

899Pour inclure des plugins privés, placez les dossiers de plugins à l'intérieur du dépôt de la place de marché et référencez-les avec un [chemin relatif](#relative-paths). La synchronisation de l'organisation empaquette chaque plugin lors de la distribution, donc les utilisateurs n'ont jamais besoin d'accès à un dépôt source séparé.

900 

901Par exemple, cette entrée de plugin `marketplace.json` référence un plugin que vous avez commité à `plugins/deploy-tools` dans le dépôt de la place de marché :

902 

903```json theme={null}

904{

905 "name": "deploy-tools",

906 "source": "./plugins/deploy-tools"

907}

908```

909 

910<h4 id="sync-a-gitlab-hosted-marketplace">

911 Synchroniser une place de marché hébergée sur GitLab

912</h4>

913 

914Pour synchroniser une place de marché à partir de gitlab.com ou d'une instance GitLab auto-gérée, un [Propriétaire](/docs/fr/server-managed-settings#access-control) ajoute d'abord une configuration GitLab pour cet hôte à [**Paramètres de l'organisation > Claude Code**](https://claude.ai/admin-settings/claude-code). Les configurations GitLab sont en bêta publique et s'appliquent uniquement à la synchronisation de la place de marché des plugins. L'ajout d'une ne rend pas les dépôts GitLab disponibles dans [Claude Code sur le web](/docs/fr/claude-code-on-the-web#limitations). Consultez [Gérer les plugins pour votre organisation](https://support.claude.com/en/articles/13837433) pour les étapes de configuration.

915 

916Lorsque vous ajoutez la place de marché, entrez l'URL HTTPS du projet, comme `https://gitlab.example.com/platform/claude-plugins`. Les projets dans les sous-groupes imbriqués fonctionnent. La synchronisation de l'organisation lit la branche par défaut du projet. Si vous activez **Synchroniser automatiquement**, seuls les pushes vers la branche par défaut démarrent une synchronisation.

917 

918<h4 id="keep-executables-out-of-the-top-level-bin-directory">

919 Garder les exécutables hors du répertoire bin de niveau supérieur

920</h4>

921 

922N'incluez pas de répertoire `bin/` de niveau supérieur dans aucun plugin que vous distribuez via les paramètres de l'organisation. claude.ai rejette un plugin qui en a un, que le plugin arrive par synchronisation de place de marché ou par téléchargement direct :

923 

924* **Synchronisation de place de marché** : la synchronisation de l'organisation rejette ce plugin et synchronise le reste de la place de marché. Le message d'erreur commence par `Plugin contains a top-level bin/ directory`.

925* **Téléchargement direct** : si vous téléchargez le plugin dans [**Paramètres de l'organisation > Plugins**](https://claude.ai/admin-settings/plugins) à la place, claude.ai rejette le téléchargement avec le même message.

926 

927Gardez les exécutables dans un autre répertoire, comme `scripts/`, et référencez-les comme `${CLAUDE_PLUGIN_ROOT}/scripts/<name>` à partir de vos [skills, hooks ou configurations de serveur MCP](/docs/fr/plugins-reference#environment-variables).

928 

929<h3 id="require-marketplaces-for-your-team">

930 Exiger des places de marché pour votre équipe

931</h3>

932 

933Vous pouvez configurer votre dépôt pour que Claude Code ajoute votre place de marché pour les membres de l'équipe une fois qu'ils [font confiance au dossier du projet](/docs/fr/permissions#what-runs-before-you-trust-a-folder), sans invite séparée. Ajoutez votre place de marché à `.claude/settings.json` :

934 

935```json theme={null}

936{

937 "extraKnownMarketplaces": {

938 "company-tools": {

939 "source": {

940 "source": "github",

941 "repo": "your-org/claude-plugins"

942 }

943 }

944 }

945}

946```

947 

948Vous pouvez également spécifier quels plugins doivent être activés par défaut :

949 

950```json theme={null}

951{

952 "enabledPlugins": {

953 "code-formatter@company-tools": true,

954 "deployment-tools@company-tools": true

955 }

956}

957```

958 

959Pour les options de configuration complètes, consultez [Paramètres des plugins](/docs/fr/settings-reference#plugin-settings).

960 

961<Note>

962 Si vous utilisez une source `directory` ou `file` locale avec un chemin relatif, le chemin se résout par rapport au checkout principal de votre dépôt. Lorsque vous exécutez Claude Code à partir d'une git worktree, le chemin pointe toujours vers le checkout principal, donc toutes les worktrees partagent le même emplacement de place de marché. L'état de la place de marché est stocké une fois par utilisateur dans `~/.claude/plugins/known_marketplaces.json`, pas par projet.

963</Note>

964 

965<h3 id="pre-populate-plugins-for-containers">

966 Pré-remplir les plugins pour les conteneurs

967</h3>

968 

969Pour les images de conteneur et les environnements CI, vous pouvez pré-remplir un répertoire de plugins au moment de la construction afin que Claude Code démarre avec des places de marché et des plugins déjà disponibles, sans rien cloner au moment de l'exécution. Définissez la variable d'environnement `CLAUDE_CODE_PLUGIN_SEED_DIR` pour pointer vers ce répertoire.

970 

971Pour superposer plusieurs répertoires de seed, séparez les chemins avec `:` sur Unix ou `;` sur Windows. Claude Code recherche chaque répertoire dans l'ordre et utilise le premier seed qui contient une place de marché ou un cache de plugin donné.

972 

973Le répertoire de seed reflète la structure de `~/.claude/plugins` :

974 

975```

976$CLAUDE_CODE_PLUGIN_SEED_DIR/

977 known_marketplaces.json

978 marketplaces/<name>/...

979 cache/<marketplace>/<plugin>/<version>/...

980```

981 

982Pour construire un répertoire de seed, exécutez Claude Code une fois lors de la construction de l'image, installez les plugins dont vous avez besoin, puis copiez le répertoire `~/.claude/plugins` résultant dans votre image et pointez `CLAUDE_CODE_PLUGIN_SEED_DIR` vers lui.

983 

984Pour ignorer l'étape de copie, définissez `CLAUDE_CODE_PLUGIN_CACHE_DIR` sur votre chemin de seed cible lors de la construction afin que les plugins s'installent directement là :

985 

986```bash theme={null}

987CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/plugins

988CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install my-tool@your-plugins

989```

990 

991Ensuite, définissez `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` dans l'environnement d'exécution de votre conteneur afin que Claude Code lise à partir du seed au démarrage.

992 

993Au démarrage, Claude Code enregistre les places de marché trouvées dans le `known_marketplaces.json` du seed dans la configuration principale, et utilise les caches de plugins trouvés sous `cache/` en place sans re-cloner. Cela fonctionne à la fois en mode interactif et en mode non-interactif avec le drapeau `-p`.

994 

995Détails du comportement :

996 

997* **Lecture seule** : Claude Code n'écrit jamais dans le répertoire de seed.

998* **Mises à jour automatiques désactivées** : les places de marché de seed ne se mettent pas à jour automatiquement.

999* **Les entrées de seed ont la priorité** : les places de marché déclarées dans le seed remplacent toutes les entrées correspondantes dans la configuration de l'utilisateur à chaque démarrage. Pour refuser un plugin de seed, utilisez `/plugin disable` plutôt que de supprimer la place de marché.

1000* **Résolution des chemins** : Claude Code localise le contenu de la place de marché en sondant `$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/` au moment de l'exécution, pas en faisant confiance aux chemins stockés dans le JSON du seed. Cela signifie que le seed fonctionne correctement même lorsqu'il est monté à un chemin différent de celui où il a été construit.

1001* **La mutation est bloquée** : l'exécution de `/plugin marketplace remove` ou `/plugin marketplace update` contre une place de marché gérée par seed échoue avec des conseils pour demander à votre administrateur de mettre à jour l'image de seed.

1002* **Compose avec les paramètres** : si `extraKnownMarketplaces` ou `enabledPlugins` déclarent une place de marché qui existe déjà dans le seed, Claude Code utilise la copie du seed au lieu de cloner.

1003 

1004<h3 id="managed-marketplace-restrictions">

1005 Restrictions des places de marché gérées

1006</h3>

1007 

1008Pour les organisations nécessitant un contrôle strict sur les sources de plugins, les administrateurs peuvent restreindre les places de marché de plugins que les utilisateurs sont autorisés à ajouter en utilisant le paramètre [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) dans les paramètres gérés. Pour également rejeter les drapeaux CLI qui chargent les plugins, les agents et les serveurs MCP pour une seule exécution, associez-le à [`disableSideloadFlags`](/docs/fr/settings-reference#disablesideloadflags). Pour créer une liste blanche des places de marché dont les plugins peuvent apparaître comme suggestions d'installation contextuelle, définissez [`pluginSuggestionMarketplaces`](/docs/fr/settings-reference#pluginsuggestionmarketplaces).

1009 

1010`strictKnownMarketplaces` correspond à la place de marché d'où provient un plugin, pas aux entrées à l'intérieur, donc les utilisateurs peuvent toujours installer un plugin avec une [source `command`](#command-sources) à partir d'une place de marché autorisée. Pour bloquer également les sources de commande, définissez [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources).

1011 

1012Lorsque `strictKnownMarketplaces` est configuré dans les paramètres gérés, le comportement de restriction dépend de la valeur :

1013 

1014| Valeur | Comportement |

1015| ----------------------- | --------------------------------------------------------------------------------------------------------------------------- |

1016| Non défini (par défaut) | Aucune restriction. Les utilisateurs peuvent ajouter n'importe quelle place de marché |

1017| Tableau vide `[]` | Verrouillage complet. Bloque chaque source de place de marché, y compris la place de marché officielle Anthropic |

1018| Liste de sources | Liste d'autorisation appliquée. Les utilisateurs ne peuvent ajouter que les places de marché qui correspondent à une entrée |

1019 

1020<h4 id="common-configurations">

1021 Configurations courantes

1022</h4>

1023 

1024Désactiver tous les ajouts de place de marché, y compris la place de marché officielle Anthropic :

1025 

1026```json theme={null}

1027{

1028 "strictKnownMarketplaces": []

1029}

1030```

1031 

1032Claude Code télécharge les plugins [synchronisés à partir de claude.ai](/docs/fr/plugins-reference#synced-plugins) à partir de votre compte plutôt que d'une place de marché, donc ce verrouillage ne les couvre pas. Pour arrêter ceux-ci également, définissez [`syncClaudeAiPlugins`](/docs/fr/settings-reference#syncclaudeaiplugins) à `false` dans les paramètres gérés, ou désactivez les Skills pour votre organisation sur claude.ai.

1033 

1034Autoriser uniquement la place de marché officielle Anthropic. La correspondance pour une entrée de dépôt unique est exacte, donc cette entrée ne couvre pas les variantes `ref` ou `path` du même dépôt :

1035 

1036```json theme={null}

1037{

1038 "strictKnownMarketplaces": [

1039 {

1040 "source": "github",

1041 "repo": "anthropics/claude-plugins-official"

1042 }

1043 ]

1044}

1045```

1046 

1047Avec cette entrée, Claude Code garde une place de marché officielle déjà enregistrée disponible et, sur une machine neuve, enregistre la place de marché automatiquement la première fois que vous démarrez Claude Code de manière interactive.

1048 

1049L'enregistrement automatique ne couvre pas chaque machine. Il manque le plus souvent :

1050 

1051* Les environnements non-interactifs qui s'exécutent avant le premier lancement interactif de la machine.

1052* Les machines où Claude Code a déjà fonctionné de manière interactive sous une politique qui a bloqué la place de marché, comme le verrouillage du tableau vide. Claude Code enregistre la tentative bloquée et ne réessaie pas après le changement de politique.

1053 

1054Sur ces machines, ajoutez la place de marché à [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) dans le même `managed-settings.json` afin que Claude Code l'enregistre automatiquement, ou exécutez `claude plugin marketplace add anthropics/claude-plugins-official`.

1055 

1056Autoriser uniquement les places de marché spécifiques :

1057 

1058```json theme={null}

1059{

1060 "strictKnownMarketplaces": [

1061 {

1062 "source": "github",

1063 "repo": "acme-corp/approved-plugins"

1064 },

1065 {

1066 "source": "github",

1067 "repo": "acme-corp/security-tools",

1068 "ref": "v2.0"

1069 },

1070 {

1071 "source": "url",

1072 "url": "https://plugins.example.com/marketplace.json"

1073 }

1074 ]

1075}

1076```

1077 

1078Autoriser chaque dépôt de place de marché sous une organisation GitHub avec une entrée [owner-wildcard](/docs/fr/settings-reference#owner-wildcards). Les owner-wildcards nécessitent Claude Code v2.1.223 ou ultérieur.

1079 

1080```json theme={null}

1081{

1082 "strictKnownMarketplaces": [

1083 {

1084 "source": "github",

1085 "repo": "acme-corp/*"

1086 }

1087 ]

1088}

1089```

1090 

1091Autoriser toutes les places de marché d'un serveur git interne en utilisant la correspondance de motif regex sur l'hôte. C'est l'approche recommandée pour [GitHub Enterprise Server](/docs/fr/github-enterprise-server#plugin-marketplaces-on-ghes) ou les instances GitLab auto-hébergées :

1092 

1093```json theme={null}

1094{

1095 "strictKnownMarketplaces": [

1096 {

1097 "source": "hostPattern",

1098 "hostPattern": "^github\\.example\\.com$"

1099 }

1100 ]

1101}

1102```

1103 

1104Autoriser les places de marché basées sur le système de fichiers à partir d'un répertoire spécifique en utilisant la correspondance de motif regex sur le chemin :

1105 

1106```json theme={null}

1107{

1108 "strictKnownMarketplaces": [

1109 {

1110 "source": "pathPattern",

1111 "pathPattern": "^/opt/approved/"

1112 }

1113 ]

1114}

1115```

1116 

1117Utilisez `".*"` comme `pathPattern` pour autoriser n'importe quel chemin du système de fichiers tout en contrôlant les sources réseau avec `hostPattern`.

1118 

1119<Note>

1120 `strictKnownMarketplaces` restreint ce que les utilisateurs peuvent ajouter, mais n'enregistre pas les places de marché par lui-même. Pour enregistrer une place de marché autorisée pour les utilisateurs automatiquement, ajoutez-la à [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) dans le même `managed-settings.json`.

1121 

1122 La place de marché officielle Anthropic est la seule que Claude Code enregistre par lui-même, et seulement lorsque la liste d'autorisation l'autorise. L'enregistrement automatique manque également certaines machines, comme les environnements non-interactifs et les machines où une politique antérieure l'a bloquée. Pour couvrir ces machines, ajoutez également la place de marché officielle à `extraKnownMarketplaces`. Pour les deux paramètres côte à côte, consultez la [référence `strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces).

1123</Note>

1124 

1125<h4 id="how-restrictions-work">

1126 Comment fonctionnent les restrictions

1127</h4>

1128 

1129Les restrictions sont vérifiées avant toute opération réseau ou système de fichiers. La vérification s'exécute lors de l'ajout de place de marché et lors de l'installation, la mise à jour, l'actualisation et la mise à jour automatique du plugin. Si une place de marché a été ajoutée avant la configuration de la politique et que sa source ne correspond plus à la liste d'autorisation, Claude Code refuse d'installer ou de mettre à jour les plugins à partir de celle-ci. L'application de la même restriction s'applique à `blockedMarketplaces`.

1130 

1131Où les deux listes sont appliquées dépend de l'endroit où vous les définissez :

1132 

1133* **La console d'administration claude.ai** : Claude Code applique les deux listes dans les sessions qui [lisent les paramètres gérés par serveur](/docs/fr/managed-settings#where-and-when-a-policy-applies). claude.ai les vérifie également lorsque quelqu'un dans votre organisation ajoute une nouvelle place de marché à partir d'un dépôt git sur claude.ai, ou à partir de **Personnaliser** dans l'application Claude Desktop en dehors de son onglet Code. Cela couvre une place de marché qu'un membre ajoute pour son propre compte et une place de marché ajoutée pour toute l'organisation sous [**Paramètres de l'organisation > Plugins**](https://claude.ai/admin-settings/plugins). claude.ai refuse un dépôt que la liste d'autorisation n'admet pas ou que la liste de blocage nomme. Il ne re-vérifie pas une place de marché qui a été ajoutée dans l'un ou l'autre endroit avant que vous définissiez les listes, et il ne vérifie pas les plugins téléchargés.

1134* **Un fichier de paramètres gérés, une politique au niveau du système d'exploitation ou une autre source gérée** : Claude Code applique les deux listes où il lit cette source. claude.ai ne la lit pas.

1135 

1136Pour bloquer chaque dépôt de place de marché sous un propriétaire GitHub, utilisez la forme owner-wildcard dans une entrée `blockedMarketplaces` : `{ "source": "github", "repo": "untrusted-org/*" }`. Nécessite Claude Code v2.1.223 ou ultérieur. Pour les règles de correspondance, qui diffèrent entre la liste de blocage et la liste d'autorisation, consultez [Owner wildcards](/docs/fr/settings-reference#owner-wildcards).

1137 

1138Lorsqu'un utilisateur ajoute une URL de dépôt `https://` que Claude Code [clone plutôt que récupère](/docs/fr/discover-plugins#add-from-other-git-hosts), comme une URL de dépôt `github.com` ou `gitlab.com` nu, Claude Code la vérifie également par rapport aux entrées `url` dans `blockedMarketplaces`. Claude Code bloque l'ajout si une entrée nomme la même URL. Dans cette comparaison, Claude Code ignore le suffixe `.git` et toute ref que l'utilisateur ajoute après `#`. Nécessite Claude Code v2.1.232 ou ultérieur. Avant v2.1.232, Claude Code ne correspondait à une entrée `url` que par rapport à une URL qu'il récupérait en tant que fichier `marketplace.json` hébergé.

1139 

1140La liste d'autorisation utilise la correspondance exacte pour la plupart des types de sources, à part les entrées `github` owner-wildcard. Pour qu'une place de marché soit autorisée, tous les champs spécifiés doivent correspondre :

1141 

1142* Pour les sources GitHub : `repo` est obligatoire, nommant soit un dépôt soit utilisant la forme owner-wildcard `owner/*` pour couvrir chaque dépôt sous ce propriétaire. Pour la façon dont les entrées wildcard correspondent, y compris les règles de casse, consultez [Owner wildcards](/docs/fr/settings-reference#owner-wildcards). Pour les entrées de dépôt unique, `ref` doit correspondre exactement ou être absent à la fois de la source de place de marché et de l'entrée de liste d'autorisation, et la même règle s'applique à `path`

1143* Pour les sources URL : l'URL complète doit correspondre exactement

1144* Pour les sources `hostPattern` : l'hôte de la place de marché est comparé au motif regex

1145* Pour les sources `pathPattern` : le chemin du système de fichiers de la place de marché est comparé au motif regex

1146 

1147La correspondance exacte de la liste d'autorisation traite les URL qui diffèrent uniquement par une barre oblique finale, un suffixe `.git` ou le schéma `ssh://` et `https://` comme des valeurs différentes. Si la place de marché de votre organisation peut être clonée par plus d'une forme d'URL, préférez une entrée `hostPattern` à une URL littérale afin que les formes `https://`, `ssh://` et `user@host:path` correspondent toutes.

1148 

1149Une [place de marché hébergée sur claude.ai](/docs/fr/discover-plugins#add-from-claude-ai) est appariée par hôte : une entrée `hostPattern` qui correspond à `claude.ai` la gouverne, dans `strictKnownMarketplaces` et dans `blockedMarketplaces`. Sur la liste d'autorisation, une telle entrée n'admet pas les téléchargements personnels claude.ai d'un membre. Nécessite Claude Code v2.1.273 ou ultérieur.

1150 

1151Parce que `strictKnownMarketplaces` est défini dans les [paramètres gérés](/docs/fr/managed-settings), les configurations individuelles des utilisateurs et des projets ne peuvent pas contourner ces restrictions.

1152 

1153Pour les détails de configuration complets, y compris tous les types de sources pris en charge et la comparaison avec `extraKnownMarketplaces`, consultez la [référence strictKnownMarketplaces](/docs/fr/settings-reference#strictknownmarketplaces).

1154 

1155<h3 id="version-resolution-and-release-channels">

1156 Résolution des versions et canaux de publication

1157</h3>

1158 

1159Les versions des plugins déterminent les chemins du cache et la détection des mises à jour : si la version résolue correspond à ce qu'un utilisateur possède déjà, `/plugin update` et la mise à jour automatique ignorent le plugin. Pour les sources basées sur git, si vous omettez `version`, Claude Code utilise le SHA du commit résolu de la source, donc les utilisateurs obtiennent une mise à jour chaque fois que ce commit change ; c'est la configuration la plus simple pour les plugins internes ou en développement actif. Consultez [Gestion des versions](/docs/fr/plugins-reference#version-management) pour l'ordre de résolution complet, y compris les sources `archive`.

1160 

1161<Warning>

1162 Définir `version` épingle le plugin pour chaque type de source sauf [`command`](#command-sources), dont la version inclut toujours un hash de ce que la commande a produit. Un plugin [chargé en place](/docs/fr/plugins-reference#plugin-caching-and-file-resolution) à partir d'une place de marché ajoutée en tant que répertoire local n'est pas épinglé non plus. Si vous déclarez `"version": "1.0.0"` dans `plugin.json` et poussez de nouveaux commits sans changer cette chaîne, les utilisateurs existants de ces sources conservent la copie en cache, car Claude Code voit la même version. Augmentez le champ à chaque publication, ou omettez-le pour revenir à la version résolue.

1163 

1164 Évitez de définir `version` à la fois dans `plugin.json` et dans l'entrée de la place de marché. La valeur `plugin.json` gagne toujours silencieusement, donc une version de manifeste obsolète peut masquer une version que vous avez définie dans `marketplace.json`.

1165</Warning>

1166 

1167<h4 id="set-up-release-channels">

1168 Configurer les canaux de publication

1169</h4>

1170 

1171Pour prendre en charge les canaux de publication « stable » et « latest » pour vos plugins, vous pouvez configurer deux places de marché qui pointent vers différentes refs ou SHAs du même dépôt. Vous pouvez ensuite assigner chaque groupe d'utilisateurs sa propre place de marché via les paramètres gérés de l'une des deux façons suivantes :

1172 

1173* Déployez des [paramètres gérés gérés par endpoint](/docs/fr/managed-settings#delivery-mechanisms) séparés, comme un fichier de paramètres gérés ou un profil MDM, aux appareils de chaque groupe. [Comment Claude Code combine les sources gérées](/docs/fr/managed-settings#precedence-within-the-managed-tier) indique si le fichier ou le profil par groupe s'applique sur un appareil qui a également une source à l'échelle de l'organisation.

1174* Définissez une [politique de passerelle d'applications Claude](/docs/fr/claude-apps-gateway-config#managed) par groupe. La passerelle applique la première politique dont la règle de correspondance correspond à un utilisateur, donc ordonnez les politiques afin que chaque utilisateur atteigne la politique de son groupe. La `extraKnownMarketplaces` d'une politique de groupe remplace la carte de la politique de rattrapage plutôt que de fusionner avec elle, donc listez chaque place de marché dont le groupe a besoin dans la politique du groupe, pas seulement sa place de marché de canal.

1175 

1176Les paramètres gérés par serveur à partir de la console d'administration [s'appliquent à chaque utilisateur de votre organisation](/docs/fr/server-managed-settings#current-limitations), donc ils ne peuvent pas porter une affectation par groupe.

1177 

1178<Warning>

1179 Chaque canal doit se résoudre en une version différente. Si vous utilisez des versions explicites, `plugin.json` doit déclarer une `version` différente à chaque ref ou SHA épinglé. Si vous omettez `version`, les SHAs de commit distincts distinguent déjà les canaux. Si deux refs se résolvent en la même chaîne de version, Claude Code les traite comme identiques et ignore la mise à jour.

1180</Warning>

1181 

1182<h5 id="example">

1183 Exemple

1184</h5>

1185 

1186```json theme={null}

1187{

1188 "name": "stable-tools",

1189 "plugins": [

1190 {

1191 "name": "code-formatter",

1192 "source": {

1193 "source": "github",

1194 "repo": "acme-corp/code-formatter",

1195 "ref": "stable"

1196 }

1197 }

1198 ]

1199}

1200```

1201 

1202```json theme={null}

1203{

1204 "name": "latest-tools",

1205 "plugins": [

1206 {

1207 "name": "code-formatter",

1208 "source": {

1209 "source": "github",

1210 "repo": "acme-corp/code-formatter",

1211 "ref": "latest"

1212 }

1213 }

1214 ]

1215}

1216```

1217 

1218<h5 id="assign-channels-to-user-groups">

1219 Assigner les canaux aux groupes d'utilisateurs

1220</h5>

1221 

1222Assignez chaque place de marché à son groupe d'utilisateurs via les paramètres gérés par endpoint par groupe ou la politique de passerelle décrite sous [Configurer les canaux de publication](#set-up-release-channels). Par exemple, le groupe stable reçoit :

1223 

1224```json theme={null}

1225{

1226 "extraKnownMarketplaces": {

1227 "stable-tools": {

1228 "source": {

1229 "source": "github",

1230 "repo": "acme-corp/stable-tools"

1231 }

1232 }

1233 }

1234}

1235```

1236 

1237Le groupe early-access reçoit `latest-tools` à la place :

1238 

1239```json theme={null}

1240{

1241 "extraKnownMarketplaces": {

1242 "latest-tools": {

1243 "source": {

1244 "source": "github",

1245 "repo": "acme-corp/latest-tools"

1246 }

1247 }

1248 }

1249}

1250```

1251 

1252<h4 id="pin-dependency-versions">

1253 Épingler les versions des dépendances

1254</h4>

1255 

1256Un plugin peut contraindre ses dépendances à une plage semver afin que les mises à jour d'une dépendance ne cassent pas le plugin dépendant. Consultez [Contraindre les versions des dépendances de plugins](/docs/fr/plugin-dependencies) pour la convention de balise git `{plugin-name}--v{version}`, la syntaxe de plage et la façon dont plusieurs contraintes sur la même dépendance sont combinées.

1257 

1258<h3 id="rename-or-remove-a-plugin">

1259 Renommer ou supprimer un plugin

1260</h3>

1261 

1262Le `name` d'un plugin est son identifiant stable. Les utilisateurs le référencent dans `enabledPlugins`, `pluginConfigs` et les commandes `/plugin install`, donc le changer casse chaque installation existante. Pour changer l'étiquette affichée dans l'interface utilisateur sans casser les installations, définissez [`displayName`](#optional-plugin-fields) et gardez `name` inchangé.

1263 

1264Si vous devez changer le `name` d'un plugin, ou si vous supprimez un plugin du tableau `plugins`, ajoutez une entrée `renames` au niveau supérieur afin que les utilisateurs existants migrent au lieu de voir une erreur `plugin-not-found`. La migration automatique nécessite Claude Code v2.1.193 ou ultérieur. Mappez chaque ancien nom à son nouveau nom, ou à `null` si le plugin n'existe plus. L'exemple suivant renomme `formatter` en `code-formatter` et enregistre que `legacy-linter` a été supprimé :

1265 

1266```json theme={null}

1267{

1268 "name": "acme-tools",

1269 "owner": { "name": "Acme" },

1270 "plugins": [

1271 { "name": "code-formatter", "source": "./plugins/code-formatter" }

1272 ],

1273 "renames": {

1274 "formatter": "code-formatter",

1275 "legacy-linter": null

1276 }

1277}

1278```

1279 

1280Lorsqu'un utilisateur démarre Claude Code avec l'ancien nom toujours dans ses paramètres, Claude Code suit la carte `renames` :

1281 

1282* Si l'entrée pointe vers un nouveau nom, Claude Code charge le plugin sous son nouveau nom et affiche un avis d'une ligne tel que `Renamed to "code-formatter" in the "acme-tools" marketplace`. Il réécrit ensuite l'ancienne clé vers la nouvelle clé dans les portées de paramètres utilisateur, projet et local pour `enabledPlugins` et `pluginConfigs`, afin que l'avis n'apparaisse qu'une fois.

1283* Pour une entrée `null`, Claude Code supprime l'ancienne clé et l'avis signale que le plugin a été supprimé de la place de marché.

1284* Si le plugin renommé utilise une source distante telle que `github` ou `npm`, Claude Code signale `plugin-cache-miss` après le renommage et l'utilisateur doit exécuter `/plugin install` une fois pour le récupérer sous le nouveau nom.

1285 

1286Traitez `renames` comme un historique d'ajout uniquement : gardez les anciennes entrées en place même après vous attendre à ce que chaque utilisateur ait migré. Claude Code suit les chaînes, donc si vous renommez ultérieurement `code-formatter` en `formatter-pro`, ajoutez une deuxième entrée plutôt que de modifier la première. Un utilisateur qui a toujours le `formatter` original activé se résout ensuite à travers les deux entrées vers `formatter-pro`.

1287 

1288Exécutez `claude plugin validate .` après avoir modifié la carte ; il rejette toute entrée dont la chaîne forme un cycle ou ne se termine pas à `null` ou à un nom listé dans `plugins`.

1289 

1290<Note>

1291 Les paramètres gérés et de politique sont en lecture seule pour Claude Code, donc les plugins activés là ne peuvent pas être réécrits automatiquement. Le plugin renommé se charge toujours à chaque session, mais l'avis de renommage se répète jusqu'à ce qu'un administrateur mette à jour `enabledPlugins` dans le fichier de paramètres gérés pour utiliser le nouveau nom. La même chose s'applique aux plugins activés via d'autres sources en lecture seule telles que `--add-dir`.

1292</Note>

1293 

1294Les versions antérieures de Claude Code ignorent le champ `renames` et signalent `plugin-not-found` pour l'ancien nom.

1295 

1296<h2 id="validation-and-testing">

1297 Validation et test

1298</h2>

1299 

1300Testez votre place de marché avant de la partager. La validation vérifie la structure des fichiers ; pour tester si un plugin modifie le comportement de Claude sur des invites réalistes, exécutez sa suite d'évaluation avec [`claude plugin eval`](/docs/fr/plugin-evals) avant de publier une nouvelle version.

1301 

1302Depuis votre répertoire de place de marché, validez la syntaxe JSON :

1303 

1304```bash theme={null}

1305claude plugin validate .

1306```

1307 

1308Ou depuis Claude Code :

1309 

1310```shell theme={null}

1311/plugin validate .

1312```

1313 

1314Ajoutez la place de marché pour le test :

1315 

1316```shell theme={null}

1317/plugin marketplace add ./path/to/marketplace

1318```

1319 

1320Installez un plugin de test pour vérifier que tout fonctionne :

1321 

1322```shell theme={null}

1323/plugin install test-plugin@marketplace-name

1324```

1325 

1326Pour les flux de travail complets de test de plugins, consultez [Tester vos plugins localement](/docs/fr/plugins#test-your-plugins-locally). Pour le dépannage technique, consultez [Référence des plugins](/docs/fr/plugins-reference).

1327 

1328<h2 id="manage-marketplaces-from-the-cli">

1329 Gérer les places de marché à partir de la CLI

1330</h2>

1331 

1332Claude Code fournit des sous-commandes `claude plugin marketplace` non-interactives pour les scripts et l'automatisation. Elles sont équivalentes aux commandes `/plugin marketplace` disponibles dans une session interactive.

1333 

1334<h3 id="plugin-marketplace-add">

1335 Plugin marketplace add

1336</h3>

1337 

1338Ajoutez une place de marché à partir d'un dépôt GitHub, d'une URL git, d'une URL distante ou d'un chemin local.

1339 

1340```bash theme={null}

1341claude plugin marketplace add <source> [options]

1342```

1343 

1344**Arguments :**

1345 

1346* `<source>` : Raccourci GitHub `owner/repo`, URL git, URL distante vers un fichier `marketplace.json` ou chemin de répertoire local. Pour épingler à une branche ou un tag, ajoutez `@ref` au raccourci GitHub ou `#ref` à une URL git

1347 

1348Une URL doit inclure son schéma. À partir de Claude Code v2.1.196, un hôte saisi sans schéma, tel que `gitlab.example.com/team/plugins`, est rejeté comme un raccourci `owner/repo` invalide et l'erreur vous indique d'ajouter `https://` ou d'utiliser `./` pour un chemin local. Les versions antérieures l'interprétaient mal comme un chemin de dépôt GitHub et échouent au moment du clonage avec une erreur GitHub non trouvé.

1349 

1350**Options :**

1351 

1352| Option | Description | Par défaut |

1353| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

1354| `--scope <scope>` | Où déclarer la place de marché : `user`, `project` ou `local`. Voir [Portées d'installation des plugins](/docs/fr/plugins-reference#plugin-installation-scopes) | `user` |

1355| `--sparse <paths...>` | Limiter le checkout à des répertoires spécifiques via git sparse-checkout. Utile pour les monodépôts | |

1356| `--claudeai` | Lire l'argument comme le nom d'une [place de marché hébergée sur claude.ai](/docs/fr/discover-plugins#add-from-claude-ai) au lieu d'une source. Nécessite Claude Code v2.1.273 ou ultérieur | |

1357 

1358Ajoutez une place de marché à partir de GitHub en utilisant le raccourci `owner/repo` :

1359 

1360```bash theme={null}

1361claude plugin marketplace add acme-corp/claude-plugins

1362```

1363 

1364Épinglez à une branche ou un tag spécifique avec `@ref` :

1365 

1366```bash theme={null}

1367claude plugin marketplace add acme-corp/claude-plugins@v2.0

1368```

1369 

1370Ajoutez à partir d'une URL git sur un hôte non-GitHub :

1371 

1372```bash theme={null}

1373claude plugin marketplace add https://gitlab.example.com/team/plugins.git

1374```

1375 

1376Ajoutez à partir d'une URL distante qui sert le fichier `marketplace.json` directement :

1377 

1378```bash theme={null}

1379claude plugin marketplace add https://example.com/marketplace.json

1380```

1381 

1382Ajoutez à partir d'un répertoire local pour le test :

1383 

1384```bash theme={null}

1385claude plugin marketplace add ./my-marketplace

1386```

1387 

1388Déclarez la place de marché à la portée du projet afin qu'elle soit partagée avec votre équipe via `.claude/settings.json` :

1389 

1390```bash theme={null}

1391claude plugin marketplace add acme-corp/claude-plugins --scope project

1392```

1393 

1394Pour un monodépôt, limitez le checkout aux répertoires qui contiennent le contenu du plugin :

1395 

1396```bash theme={null}

1397claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

1398```

1399 

1400Ajoutez une [place de marché hébergée sur claude.ai](/docs/fr/discover-plugins#add-from-claude-ai) par le nom imprimé dans la section `From claude.ai:` de `claude plugin marketplace list` :

1401 

1402```bash theme={null}

1403claude plugin marketplace add --claudeai claudeai-organization-library

1404```

1405 

1406Avec `--claudeai`, la commande refuse `--scope` et `--sparse`. La place de marché est hébergée pour votre compte, pas déclarée dans un fichier de paramètres, donc vous ne pouvez pas la partager via le `.claude/settings.json` d'un projet.

1407 

1408<h3 id="plugin-marketplace-list">

1409 Plugin marketplace list

1410</h3>

1411 

1412Listez toutes les places de marché configurées.

1413 

1414```bash theme={null}

1415claude plugin marketplace list [options]

1416```

1417 

1418**Options :**

1419 

1420| Option | Description |

1421| :------- | :------------- |

1422| `--json` | Sortie en JSON |

1423 

1424Avec `--json`, chaque entrée inclut `name`, `source`, un champ `installLocation` avec le chemin du cache local où la place de marché est stockée, et des champs spécifiques à la source : `repo` pour les sources GitHub, `url` pour les sources git et URL, et `path` pour les sources locales. Les sources GitHub et git incluent également un champ `ref` lorsque la place de marché a été ajoutée avec une branche ou un tag épinglé.

1425 

1426Une [place de marché claude.ai](/docs/fr/discover-plugins#add-from-claude-ai) ajoutée n'a pas de clone local, donc son entrée porte ses identifiants claude.ai, `marketplaceId` et `organizationUuid`, à la place de `installLocation`.

1427 

1428Dans les sessions de terminal où [les plugins se synchronisent à partir de votre compte claude.ai](/docs/fr/plugins-reference#synced-plugins), la liste textuelle se termine par une section `From claude.ai:` nommant ce que claude.ai liste pour votre compte au-delà des places de marché que vous avez ajoutées. Pour en ajouter une, voir [Ajouter à partir de claude.ai](/docs/fr/discover-plugins#add-from-claude-ai). La sortie `--json` couvre uniquement les places de marché configurées et laisse cette section de côté. Nécessite Claude Code v2.1.273 ou ultérieur.

1429 

1430<h3 id="plugin-marketplace-remove">

1431 Plugin marketplace remove

1432</h3>

1433 

1434Supprimez une place de marché configurée. L'alias `rm` est également accepté.

1435 

1436```bash theme={null}

1437claude plugin marketplace remove <name> [options]

1438```

1439 

1440**Arguments :**

1441 

1442* `<name>` : nom de la place de marché à supprimer, comme indiqué par `claude plugin marketplace list`. C'est le `name` de `marketplace.json`, pas la source que vous avez passée à `add`

1443 

1444**Options :**

1445 

1446| Option | Description | Par défaut |

1447| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

1448| `--scope <scope>` | Restreindre la suppression à une seule portée de paramètres : `user`, `project` ou `local`. Voir [Portées d'installation des plugins](/docs/fr/plugins-reference#plugin-installation-scopes). Lorsqu'il est omis, la déclaration est supprimée de chaque portée modifiable. Lorsqu'il est donné, seule la déclaration de cette portée est supprimée ; l'état partagé, le cache et les données des plugins installés sont préservés lorsque la place de marché est toujours déclarée dans une autre portée | (toutes les portées) |

1449 

1450<Warning>

1451 La suppression d'une place de marché de sa dernière portée restante désinstalle également tous les plugins que vous avez installés à partir de celle-ci. Pour actualiser une place de marché sans perdre les plugins installés, utilisez `claude plugin marketplace update` à la place.

1452</Warning>

1453 

1454<h3 id="plugin-marketplace-update">

1455 Plugin marketplace update

1456</h3>

1457 

1458Actualisez les places de marché à partir de leurs sources pour récupérer les nouveaux plugins et les changements de version. Une place de marché ajoutée avec une branche ou un tag `ref` se met à jour vers le dernier commit de cette ref, pas la branche par défaut du dépôt.

1459 

1460```bash theme={null}

1461claude plugin marketplace update [name]

1462```

1463 

1464**Arguments :**

1465 

1466* `[name]` : nom de la place de marché à mettre à jour, comme indiqué par `claude plugin marketplace list`. Met à jour toutes les places de marché si omis

1467 

1468À la fois `remove` et `update` échouent lorsqu'ils sont exécutés contre une place de marché gérée par seed, qui est en lecture seule. Lors de la mise à jour de toutes les places de marché, les entrées gérées par seed sont ignorées et les autres places de marché se mettent toujours à jour. Pour modifier les plugins fournis par seed, demandez à votre administrateur de mettre à jour l'image de seed. Voir [Pré-remplir les plugins pour les conteneurs](#pre-populate-plugins-for-containers).

1469 

1470<h2 id="troubleshooting">

1471 Dépannage

1472</h2>

1473 

1474<h3 id="marketplace-not-loading">

1475 La place de marché ne se charge pas

1476</h3>

1477 

1478**Symptômes** : Impossible d'ajouter la place de marché ou de voir les plugins qu'elle contient

1479 

1480**Solutions** :

1481 

1482* Vérifiez que l'URL de la place de marché est accessible

1483* Vérifiez que `.claude-plugin/marketplace.json` existe au chemin spécifié

1484* Assurez-vous que la syntaxe JSON est valide en utilisant `claude plugin validate .` ou `/plugin validate .` à partir du répertoire de la place de marché. Pour vérifier le frontmatter des compétences, agents et commandes, consultez [Valider un plugin ou un répertoire sans manifeste](#validate-a-plugin-or-a-directory-without-a-manifest)

1485* Pour les dépôts privés, confirmez que vous avez les permissions d'accès

1486 

1487<h3 id="marketplace-validation-errors">

1488 Erreurs de validation de la place de marché

1489</h3>

1490 

1491Exécutez `claude plugin validate .` ou `/plugin validate .` à partir de votre répertoire de place de marché pour vérifier les problèmes. Lorsqu'il est pointé sur un répertoire de place de marché, le validateur vérifie `marketplace.json` pour les erreurs de schéma, les noms de plugins en doublon et la traversée de chemin source. Pour chaque entrée dont la `source` est un chemin local, il valide également le `plugin.json` de ce plugin et avertit lorsque la `version` de l'entrée ne correspond pas à celle dans `plugin.json`. Les problèmes trouvés dans le `plugin.json` d'un plugin sont préfixés par l'index d'entrée, sous la forme `plugins[2] plugin.json →`.

1492 

1493À partir de Claude Code v2.1.196, la passe par entrée inclut également :

1494 

1495* les plugins dont la `source` est `.`

1496* s'exécute lorsque `marketplace.json` est en dehors d'un répertoire `.claude-plugin`, en résolvant les sources par rapport au répertoire du fichier lui-même

1497* signale les problèmes de chaque entrée même lorsqu'une autre partie du fichier a des erreurs de schéma

1498 

1499Les versions antérieures ignorent les plugins à la racine de la place de marché et ne descendent que depuis un `.claude-plugin/marketplace.json`.

1500 

1501À partir d'un répertoire de place de marché, Claude Code n'ouvre pas les fichiers de compétence, agent, commande ou hook des plugins. Pour trouver les erreurs dans ces fichiers, consultez [Valider un plugin ou un répertoire sans manifeste](#validate-a-plugin-or-a-directory-without-a-manifest). Le tableau ci-dessous énumère les erreurs les plus courantes d'un répertoire de place de marché, avec la cause et la correction pour chacune :

1502 

1503| Erreur | Cause | Solution |

1504| :------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |

1505| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | Le répertoire que vous avez nommé n'a pas de `.claude-plugin/marketplace.json` ou `plugin.json`, et aucun fichier de compétence, agent ou commande à vérifier | Exécutez à partir de la racine de la place de marché, ou créez `.claude-plugin/marketplace.json` avec les champs obligatoires |

1506| `Invalid JSON syntax: Unexpected token...` | Erreur de syntaxe JSON dans marketplace.json | Vérifiez les virgules manquantes, les virgules supplémentaires ou les chaînes non citées |

1507| `Duplicate plugin name "x" found in marketplace` | Deux plugins partagent le même nom | Donnez à chaque plugin une valeur `name` unique |

1508| `plugins[0].source: Path contains ".."` | Un segment du chemin source est `..` | Utilisez des chemins relatifs à la racine de la place de marché sans segments `..`. Voir [Chemins relatifs](#relative-paths) |

1509| `Marketplace name cannot contain control or bidirectional-formatting characters` | Le nom de la place de marché contient un caractère de formatage bidirectionnel Unicode ou un caractère de contrôle, tel qu'une échappement ou une nouvelle ligne | Supprimez le caractère du nom. Avant v2.1.247, ces caractères produisaient l'erreur `Marketplace name impersonates an official Anthropic/Claude marketplace` |

1510| `Plugin name cannot contain control or bidirectional-formatting characters` | Un nom de plugin contient un caractère de formatage bidirectionnel Unicode ou un caractère de contrôle, tel qu'une échappement ou une nouvelle ligne | Supprimez le caractère du nom. Avant v2.1.247, Claude Code n'exécutait pas cette vérification |

1511 

1512**Avertissements** (non bloquants) :

1513 

1514* `Marketplace has no plugins defined` : ajoutez au moins un plugin au tableau `plugins`

1515* `No marketplace description provided` : ajoutez une `description` au niveau supérieur pour aider les utilisateurs à comprendre votre place de marché

1516* `Plugin name "x" is not kebab-case` : renommez en minuscules, chiffres et tirets uniquement (par exemple, `my-plugin`). Claude Code accepte d'autres formes, mais la synchronisation de la place de marché claude.ai les rejette.

1517* `Marketplace name "x" is reserved in Claude Desktop` : la place de marché est nommée `org`, `org-provisioned` ou `unknown`, dans n'importe quelle casse. Claude Code accepte ces noms, mais la synchronisation de la place de marché gérée de Claude Desktop rejette la place de marché entière. Renommez la place de marché. Avant v2.1.221, `claude plugin validate` n'exécutait pas cette vérification.

1518* `Marketplace name "x" is not accepted by Claude Desktop` ou `Plugin name "x" is not accepted by Claude Desktop` : Claude Desktop accepte les noms de jusqu'à 128 caractères composés de lettres, chiffres, `.`, `_` et `-`, commençant par une lettre ou un chiffre. Claude Code accepte d'autres formes, mais la synchronisation de la place de marché gérée de Claude Desktop rejette une place de marché dont le nom échoue à la vérification et supprime silencieusement une entrée de plugin dont le nom échoue. Renommez la place de marché ou le plugin. Avant v2.1.221, `claude plugin validate` n'exécutait pas ces vérifications.

1519 

1520<h4 id="validate-a-plugin-or-a-directory-without-a-manifest">

1521 Valider un plugin ou un répertoire sans manifeste

1522</h4>

1523 

1524Pour trouver les fichiers de compétence, agent et commande dont le frontmatter ne s'analyse pas, exécutez `claude plugin validate` et nommez le répertoire qui les contient. Claude Code ne regarde pas en dehors du répertoire que vous nommez. Chaque exécution sauf une contre un plugin qui a un `plugin.json` nécessite Claude Code v2.1.233 ou ultérieur.

1525 

1526<h5 id="pick-the-directory-to-name">

1527 Choisir le répertoire à nommer

1528</h5>

1529 

1530Claude Code vérifie différents fichiers selon le répertoire que vous nommez. Trouvez ce que vous voulez vérifier dans la première colonne, et exécutez la commande de cette ligne :

1531 

1532| Pour vérifier | Exécutez | Claude Code vérifie |

1533| :----------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1534| Un plugin qui a un `plugin.json` | `claude plugin validate ./plugins/my-plugin` | `plugin.json`, `hooks/hooks.json`, et les répertoires `skills`, `agents` et `commands` à la racine du plugin |

1535| Un répertoire de compétences, agents ou commandes, comme un plugin qui n'a pas encore de `plugin.json` | `claude plugin validate .claude/skills`, `~/.claude/agents`, ou `./my-plugin/agents` | Chaque fichier de compétence, agent ou commande dans ce répertoire |

1536| Un dossier dont la compétence est son `SKILL.md` racine | `claude plugin validate ./skills`, en nommant le répertoire `skills` qui contient le dossier | Le `SKILL.md` racine de chaque dossier. Le répertoire contenant doit être nommé `skills` ; un dossier sous un autre nom, comme `plugins/`, n'a pas d'exécution qui vérifie son `SKILL.md` racine |

1537| Les trois répertoires d'un projet à la fois | `claude plugin validate .claude`, ou la racine du projet lorsqu'il n'a pas de manifeste `.claude-plugin/` | `.claude/skills`, `.claude/agents` et `.claude/commands` |

1538| Vos répertoires au niveau utilisateur | `claude plugin validate ~/.claude` | `~/.claude/skills`, `~/.claude/agents` et `~/.claude/commands` |

1539 

1540<h5 id="check-a-plugin-whose-skill-is-its-root-skill-md">

1541 Vérifier un plugin dont la compétence est son `SKILL.md` racine

1542</h5>

1543 

1544Lorsque vous exécutez `claude plugin validate` contre un répertoire de plugin, Claude Code ne vérifie pas un `SKILL.md` à la racine du plugin. Lorsque le plugin se trouve dans un répertoire nommé `skills`, exécutez la commande deux fois :

1545 

1546* Nommez ce répertoire `skills` pour vérifier le `SKILL.md` racine du plugin.

1547* Nommez le répertoire du plugin pour vérifier le reste.

1548 

1549Lorsque le plugin se trouve sous un autre nom, comme `plugins/`, l'exécution du répertoire `skills` n'est pas disponible, et aucune exécution ne vérifie son `SKILL.md` racine.

1550 

1551<h5 id="check-files-behind-symlinks">

1552 Vérifier les fichiers derrière les symlinks

1553</h5>

1554 

1555Lorsque vous exécutez `claude plugin validate`, Claude Code ne suit pas les symlinks à l'intérieur du répertoire que vous nommez. Ce qu'il fait dépend de l'endroit où se trouve le lien :

1556 

1557* **Un répertoire `skills`, `agents` ou `commands` lié sous la racine du plugin ou `.claude`** : Claude Code avertit que rien dedans n'a été lu.

1558* **Une entrée liée à l'intérieur d'un répertoire `skills`, `agents` ou `commands`** : Claude Code la saute et avertit, par répertoire, combien d'entrées il a sautées qu'une session chargerait.

1559* **Le répertoire `skills`, `agents` ou `commands` que vous nommez est lui-même un symlink, ou son répertoire parent `.claude` est** : Claude Code signale une erreur et ne vérifie rien dedans. Nommez le répertoire réel à la place.

1560 

1561Dans deux cas de compétences, l'exécution réussit avec des avertissements. Pour vérifier les fichiers liés, exécutez à nouveau et nommez un répertoire qui les contient directement :

1562 

1563* **Un plugin dont le répertoire `skills` [est lié au répertoire skills d'un plugin frère](/docs/fr/plugins-reference#share-files-within-a-marketplace-with-symlinks)** : nommez le répertoire du plugin frère.

1564* **Une [entrée de compétence liée](/docs/fr/skills#where-skills-live) dans `~/.claude/skills` ou `.claude/skills`** : Claude Code suit l'entrée dans une session. Pour la vérifier, nommez un répertoire appelé `skills` qui contient le dossier réel.

1565 

1566<h5 id="read-the-validation-results">

1567 Lire les résultats de validation

1568</h5>

1569 

1570Une exécution propre se termine par `Validation passed`.

1571 

1572`No manifest found in directory` signifie que Claude Code n'a trouvé aucun `plugin.json` ou `marketplace.json` là-bas, et aucun fichier de compétence, agent ou commande dans les répertoires qu'il sonde en dessous. Nommez le répertoire `skills`, `agents` ou `commands` qui contient vos fichiers à la place.

1573 

1574Deux des erreurs que Claude Code signale à partir de ces exécutions, avec la correction pour chacune :

1575 

1576* `YAML frontmatter failed to parse: ...` : corrigez le YAML dans le bloc frontmatter du fichier de compétence, agent ou commande. Jusqu'à ce que vous le fassiez, une session ne lit aucun champ frontmatter du fichier

1577* `Invalid JSON syntax: ...` sur `hooks/hooks.json` : corrigez la syntaxe JSON. Jusqu'à ce que vous le fassiez, une session charge le plugin sans les hooks dans ce fichier. Claude Code signale cette erreur uniquement dans une exécution de plugin

1578 

1579Dans une exécution de plugin, Claude Code avertit également d'un `CLAUDE.md` à la racine du plugin. Pour les chemins que vous définissez via les [champs de chemin de composant](/docs/fr/plugins-reference#component-path-fields) dans `plugin.json`, Claude Code vérifie que chaque chemin existe mais ne lit pas les fichiers là-bas.

1580 

1581<h3 id="plugin-installation-failures">

1582 Échecs d'installation de plugins

1583</h3>

1584 

1585**Symptômes** : La place de marché apparaît mais l'installation du plugin échoue

1586 

1587**Solutions** :

1588 

1589* Vérifiez que les URL sources des plugins sont accessibles

1590* Vérifiez que les répertoires des plugins contiennent les fichiers requis

1591* Pour les sources GitHub, assurez-vous que les dépôts sont publics ou que vous avez accès

1592* Testez manuellement les sources de plugins en les clonant/téléchargeant

1593* Si la source épingle à la fois `ref` et `sha`, une branche ou un tag en amont supprimé ne bloque pas l'installation sur la plupart des hôtes git, y compris GitHub, GitLab et Bitbucket. Sur les serveurs qui ne supportent pas la récupération des commits par SHA, comme AWS CodeCommit, le `ref` doit toujours exister et le commit épinglé doit être accessible à partir de celui-ci. Si l'installation échoue toujours, confirmez que le commit épinglé existe toujours dans le dépôt

1594 

1595<h3 id="private-repository-authentication-fails">

1596 L'authentification du dépôt privé échoue

1597</h3>

1598 

1599**Symptômes** : Erreurs d'authentification lors de l'installation de plugins à partir de dépôts privés

1600 

1601**Solutions** :

1602 

1603Pour l'installation manuelle et les mises à jour :

1604 

1605* Vérifiez que vous êtes authentifié auprès de votre fournisseur git (par exemple, exécutez `gh auth status` pour GitHub)

1606* Vérifiez que votre assistant de credentials est configuré : `git config --global credential.helper`

1607* Exécutez `git ls-remote <marketplace-url>` pour tester si git peut s'authentifier seul. Si git demande un nom d'utilisateur ou un mot de passe, stockez d'abord les credentials : pour GitHub via HTTPS, exécutez `gh auth setup-git`, et pour les dépôts SSH, chargez votre clé dans `ssh-agent`

1608 

1609Pour les mises à jour automatiques en arrière-plan :

1610 

1611* La vérification en arrière-plan utilise vos assistants de credentials git configurés mais ne demande jamais, donc votre assistant doit pouvoir répondre avec une credential stockée. Les dépôts SSH avec une clé chargée dans `ssh-agent` s'authentifient également

1612* Si votre assistant a besoin de vous demander, la mise à jour en arrière-plan échoue silencieusement et le clone existant reste en place. Connectez-vous à votre assistant d'abord pour qu'il détienne une credential pour l'hôte. Pour GitHub, exécutez `gh auth login`, puis `gh auth setup-git`

1613* Lorsque la vérification trouve de nouveaux commits, ou ne peut pas atteindre ou s'authentifier auprès du serveur distant, Claude Code re-clone la place de marché avec les mêmes credentials. Le re-clone peut expirer sur les grands dépôts

1614* Définissez `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` pour conserver le clone existant sans tenter le re-clone lorsque la vérification en arrière-plan ne peut pas atteindre ou s'authentifier auprès du serveur distant

1615* Si le re-clonage expire sur un grand dépôt, augmentez la limite avec [`CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`](#git-operations-time-out)

1616* Ou mettez à jour les places de marché privées manuellement avec `/plugin marketplace update <name>`, qui utilise vos credentials

1617 

1618Avant v2.1.280, la vérification en arrière-plan s'exécutait sans vos assistants de credentials et ne pouvait pas s'authentifier auprès des dépôts privés via HTTPS.

1619 

1620<h3 id="marketplace-updates-fail-in-offline-environments">

1621 Les mises à jour de la place de marché échouent dans les environnements hors ligne

1622</h3>

1623 

1624**Symptômes** : Dans un environnement hors ligne ou isolé, la vérification en arrière-plan de la place de marché ne peut pas atteindre le serveur distant et Claude Code tente à plusieurs reprises un re-clone qui ne peut pas réussir.

1625 

1626**Cause** : La vérification en arrière-plan vérifie le serveur distant de la place de marché pour les nouveaux commits, et lorsque la vérification ne peut pas atteindre le serveur distant, Claude Code tente de cloner la place de marché à nouveau. Hors ligne, le clone échoue de la même manière et le clone existant reste en place. Avant v2.1.274, la vérification exécutait `git pull` dans le clone existant, déplaçait le clone de côté pour re-cloner lorsque le pull échouait, et le restaurait ensuite au mieux.

1627 

1628La vérification s'exécute en arrière-plan après le démarrage, de sorte qu'elle ne retarde pas le démarrage. Chaque session répète toujours la tentative échouée, et chaque opération git peut attendre le [délai d'expiration de 120 secondes](#git-operations-time-out).

1629 

1630**Solution** : Définissez `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` pour ignorer la tentative de re-clone et continuer à utiliser le clone existant lorsque la vérification ne peut pas atteindre le serveur distant :

1631 

1632```bash theme={null}

1633export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

1634```

1635 

1636Pour les déploiements entièrement hors ligne où le dépôt ne sera jamais accessible, utilisez [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) pour pré-remplir le répertoire des plugins au moment de la construction à la place.

1637 

1638<h3 id="git-operations-time-out">

1639 Les opérations Git expirent

1640</h3>

1641 

1642**Symptômes** : L'installation du plugin ou les mises à jour de la place de marché échouent avec une erreur de délai d'expiration comme `Git clone timed out after 120s`.

1643 

1644**Cause** : Claude Code utilise un délai d'expiration de 120 secondes pour toutes les opérations git, y compris le clonage des dépôts de plugins et le re-clonage d'une place de marché pour la mettre à jour. Les grands dépôts ou les connexions réseau lentes peuvent dépasser cette limite.

1645 

1646**Solution** : Augmentez le délai d'expiration en utilisant la variable d'environnement `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. La valeur est en millisecondes :

1647 

1648```bash theme={null}

1649export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 minutes

1650```

1651 

1652<h3 id="plugins-with-relative-paths-fail-in-url-based-marketplaces">

1653 Les plugins avec chemins relatifs échouent dans les places de marché basées sur les URL

1654</h3>

1655 

1656**Symptômes** : Vous avez ajouté une place de marché via une URL comme `https://example.com/marketplace.json`, mais les plugins avec des sources de chemin relatif comme `"./plugins/my-plugin"` échouent à installer avec `its marketplace entry path does not stay inside the marketplace directory`. Les plugins déjà installés échouent à charger avec `Plugin source path refused`. Les deux messages ont une [entrée de référence d'erreur](/docs/fr/errors#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory).

1657 

1658**Cause** : L'ajout d'une place de marché basée sur les URL télécharge uniquement le fichier `marketplace.json` lui-même, et Claude Code ne récupère pas les fichiers de plugins par chemin relatif à partir de ce serveur. Les chemins relatifs dans l'entrée de la place de marché référencent des fichiers sur le serveur distant qui n'ont pas été téléchargés.

1659 

1660**Solutions** :

1661 

1662* **Utiliser des sources externes** : changez les entrées de plugins pour n'importe quelle [source de plugin](#plugin-sources) autre qu'un chemin relatif :

1663 ```json theme={null}

1664 { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

1665 ```

1666* **Utiliser une place de marché basée sur Git** : Hébergez votre place de marché dans un dépôt Git et ajoutez-la avec l'URL git. Les places de marché basées sur Git clonent le dépôt entier, ce qui rend les chemins relatifs fonctionnels.

1667 

1668<h3 id="files-not-found-after-installation">

1669 Fichiers non trouvés après l'installation

1670</h3>

1671 

1672**Symptômes** : Le plugin s'installe mais les références aux fichiers échouent, en particulier les fichiers en dehors du répertoire du plugin

1673 

1674**Cause** : Claude Code copie les plugins installés vers un répertoire de cache, sauf si le plugin se charge sur place. Une [source `command` en mode lien](#copy-mode-and-link-mode) se charge sur place, tout comme une [source de chemin relatif](#relative-paths) dans une place de marché ajoutée à partir d'un répertoire local. Les chemins qui référencent des fichiers en dehors du répertoire du plugin copié (comme `../shared-utils`) ne fonctionneront pas car ces fichiers ne sont pas copiés.

1675 

1676**Solutions** : Consultez [Plugin caching and file resolution](/docs/fr/plugins-reference#plugin-caching-and-file-resolution) pour les solutions de contournement, y compris les symlinks et la restructuration des répertoires.

1677 

1678Pour des outils de débogage supplémentaires et des problèmes courants, consultez [Debugging and development tools](/docs/fr/plugins-reference#debugging-and-development-tools).

1679 

1680<h2 id="see-also">

1681 Voir aussi

1682</h2>

1683 

1684* [Découvrir et installer des plugins préconfigurés](/docs/fr/discover-plugins) - Installation de plugins à partir de places de marché existantes

1685* [Plugins](/docs/fr/plugins) - Création de vos propres plugins

1686* [Référence des plugins](/docs/fr/plugins-reference) - Spécifications techniques complètes et schémas

1687* [Paramètres des plugins](/docs/fr/settings-reference#plugin-settings) - Options de configuration des plugins

1688* [Référence strictKnownMarketplaces](/docs/fr/settings-reference#strictknownmarketplaces) - Restrictions des places de marché gérées

plugin-relevance.md +0 −188 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Recommander des plugins pour votre organisation

6 

7> Ajoutez un bloc de pertinence aux entrées de plugins de la marketplace afin que Claude Code les suggère lorsque le travail d'un utilisateur correspond.

8 

9Si vous exploitez une marketplace de plugins pour votre organisation, vous pouvez faire en sorte que Claude Code suggère des plugins spécifiques aux utilisateurs en fonction de ce sur quoi ils travaillent. Ajoutez un bloc `relevance` à l'entrée d'un plugin dans `marketplace.json`, puis autorisez la marketplace dans les paramètres gérés. Lorsque la session d'un utilisateur correspond à l'un des signaux déclarés, Claude Code affiche une suggestion d'installation pour ce plugin.

10 

11Les suggestions déclarées par la marketplace sont optionnelles par marketplace via les [paramètres gérés](/docs/fr/managed-settings). Aucune déclaration `relevance` d'une marketplace ne produit de suggestions jusqu'à ce qu'un administrateur l'ajoute à la liste d'autorisation, y compris la marketplace officielle d'Anthropic. Claude Code inclut également une suggestion intégrée qui est indépendante de cette liste d'autorisation ; ce conseil et tous les conseils déclarés par la marketplace sont désactivés lorsque [`spinnerTipsEnabled`](/docs/fr/settings-reference#spinnertipsenabled) est défini sur `false`.

12 

13Cette page est destinée aux opérateurs de marketplace et aux administrateurs d'entreprise. Si vous cherchez à installer des plugins, consultez [Découvrir et installer des plugins](/docs/fr/discover-plugins).

14 

15<h2 id="how-it-works">

16 Fonctionnement

17</h2>

18 

19Chaque entrée de plugin dans `marketplace.json` peut contenir un objet `relevance`. L'objet nomme un sujet et un ou plusieurs signaux. Un signal est un motif que Claude Code teste par rapport à la session actuelle, comme le répertoire de travail ou les fichiers que Claude a lus.

20 

21La correspondance des signaux se fait localement sur la machine de l'utilisateur. La correspondance n'ajoute aucun trafic réseau et ne signale pas à Anthropic ou à l'opérateur de la marketplace quels signaux ont correspondu ou leurs valeurs.

22 

23Lorsqu'un signal correspond et que le plugin n'est pas déjà installé, Claude Code affiche le plugin à trois endroits :

24 

25* **Conseil du spinner** : un message « Vous travaillez avec *sujet* ? Installez le plugin *plugin* » avec la commande `/plugin install` apparaît sous le spinner pendant que Claude répond.

26* **Suggestion au démarrage de la session** : si le signal `cwd` correspond au répertoire de travail, une notification `plugin suggestion: <name>@<marketplace> · /plugin` d'une ligne apparaît avant le premier tour.

27* **Onglet Discover de `/plugin`** : le plugin est épinglé en haut de la liste Discover avec une annotation telle que « suggéré pour ce répertoire » ou « suggéré pour les commandes stripe ».

28 

29Le conseil du spinner et la notification de démarrage de session font partie du système de conseils du spinner. Claude Code désactive les deux lorsque `spinnerTipsEnabled` se résout à `false` dans vos fichiers de paramètres, ou lorsque `excludeDefault` se résout à `true` dans les clés [`spinnerTipsOverride`](/docs/fr/settings-reference#spinnertipsoverride) dans les paramètres utilisateur, `--settings` et gérés, et que ces clés configurent au moins un conseil ou un `tipsFile`.

30 

31L'épingle de l'onglet Discover est indépendante des paramètres de conseil.

32 

33Claude Code n'installe jamais un plugin automatiquement. L'utilisateur confirme toujours.

34 

35<h2 id="add-relevance-to-a-plugin-entry">

36 Ajouter la pertinence à une entrée de plugin

37</h2>

38 

39Ajoutez un objet `relevance` à l'entrée du plugin dans votre `marketplace.json`. L'exemple suivant déclare que le plugin `terraform-helpers` est pertinent lorsque Claude lit un fichier `.tf` ou lorsque Claude exécute `terraform` :

40 

41```json theme={null}

42{

43 "name": "acme-corp-plugins",

44 "owner": { "name": "Acme Platform Team" },

45 "plugins": [

46 {

47 "name": "terraform-helpers",

48 "source": "./plugins/terraform-helpers",

49 "description": "Acme conventions and helpers for Terraform",

50 "relevance": {

51 "topic": "Terraform",

52 "signals": {

53 "cli": ["terraform"],

54 "filesRead": ["**/*.tf"]

55 }

56 }

57 }

58 ]

59}

60```

61 

62Un plugin avec un bloc `relevance` mais sans signal correspondant se comporte comme n'importe quelle autre entrée de marketplace. Il apparaît dans la liste Discover à sa position normale et ne s'affiche jamais comme un conseil du spinner.

63 

64<h2 id="field-reference">

65 Référence des champs

66</h2>

67 

68<h3 id="relevance">

69 `relevance`

70</h3>

71 

72| Champ | Type | Description |

73| :-------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

74| `topic` | string | Optionnel. La phrase qui remplit « Vous travaillez avec *sujet* ? » dans le conseil du spinner. Souvent le nom du produit, par exemple `Stripe`. Utilisez un domaine tel que `design` lorsque le nom du plugin ne se lit pas naturellement comme un sujet. Par défaut, le nom du plugin avec chaque segment de tiret en majuscules. La notification de démarrage de session n'utilise pas cette valeur. Maximum 64 caractères. |

75| `signals` | object | Les correspondances qui déterminent quand le plugin est pertinent. Au moins un signal est requis pour que le plugin soit suggérable. Voir le tableau ci-dessous. |

76 

77<h3 id="relevance-signals">

78 `relevance.signals`

79</h3>

80 

81| Champ | Type | Description |

82| :------------- | :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

83| `cwd` | array of strings | Motifs glob correspondant au répertoire de travail de la session. Correspondance en tant que chemin absolu et, lorsqu'il se trouve dans un référentiel git, en tant que chemin relatif à la racine du référentiel. Normalisé avec barre oblique avant et insensible à la casse. Chaque motif correspond au répertoire lui-même et à tout ce qui se trouve sous lui, donc `infra`, `infra/`, et `infra/**` se comportent de manière identique. C'est le seul signal qui peut correspondre au démarrage de la session, avant le premier tour. Maximum 10 motifs de 256 caractères chacun. |

84| `cli` | array of strings | Noms de commandes à partir des commandes shell que Claude a exécutées cette session, par exemple `["stripe"]`. S'applique sur chaque plateforme : les commandes exécutées sur Windows via PowerShell ou Git Bash sont enregistrées de la même manière. Claude Code enregistre un nom de commande par invocation d'outil shell : le premier jeton après toute affectation de variable d'environnement de début et `sudo`. Les commandes composées ne contribuent que leur commande de début, donc `cd infra && terraform plan` enregistre `cd`, pas `terraform`. Correspondance exacte. Maximum 10 entrées de 64 caractères chacune. |

85| `hosts` | array of strings | Noms d'hôtes vus dans les URL `http://` ou `https://` dans les commandes Bash cette session, par exemple `["api.stripe.com"]`. Nom d'hôte en minuscules uniquement : pas de schéma, port ou chemin. Correspondance exacte insensible à la casse. Maximum 20 entrées de 128 caractères chacune. |

86| `filesRead` | array of strings | Motifs glob correspondant aux chemins des fichiers que Claude a lus cette session, par exemple `["**/*.tf"]`. Normalisé avec barre oblique avant et insensible à la casse. Maximum 10 motifs de 256 caractères chacun. |

87| `manifestDeps` | array of objects | Dépendances déclarées dans les manifestes de packages que Claude a lus cette session. Chaque entrée est `{ "file": "...", "pattern": "..." }`, où `file` est une expression régulière correspondant au chemin du fichier manifeste tel qu'enregistré dans l'état de la session, généralement un chemin absolu, et `pattern` est une expression régulière correspondant au contenu de ce fichier. Ancrez `file` à la fin, par exemple `[/\\\\]package\\.json$` sous forme échappée JSON, car un motif ancré au début ne correspond jamais à un chemin absolu. Les chemins ne sont pas normalisés par séparateur pour ce signal, donc les chemins Windows utilisent des barres obliques inverses. Les fichiers manifeste plus grands que 512 Ko sont ignorés. Les deux valeurs sont des chaînes source JavaScript `RegExp` d'au maximum 256 caractères. `file` correspond insensible à la casse. `pattern` est sensible à la casse. Maximum 10 entrées. |

88 

89Les signaux `cli`, `hosts`, `filesRead`, et `manifestDeps` ont besoin de l'historique de la session, donc ils ne peuvent correspondre que sur le conseil du spinner et l'onglet Discover.

90 

91Les signaux `filesRead` et `manifestDeps` testent l'état du fichier enregistré de la session, qui inclut également les fichiers que Claude a écrits ou modifiés et les fichiers de mémoire `CLAUDE.md` chargés automatiquement. Pour ces deux signaux, Claude Code ignore les chemins sous son propre [répertoire de configuration](/docs/fr/claude-directory) et ses répertoires temporaires.

92 

93L'exemple suivant utilise `manifestDeps` pour suggérer un plugin Stripe une fois que Claude a lu un `package.json` qui dépend de `stripe`. Le motif `file` utilise `[/\\\\]` pour qu'il corresponde à la fois aux séparateurs de chemin avec barre oblique avant et barre oblique inverse, et `\\.` pour que le point soit littéral. En JSON, chaque barre oblique inverse dans l'expression régulière est écrite deux fois.

94 

95```json theme={null}

96{

97 "name": "stripe-helpers",

98 "source": "./plugins/stripe-helpers",

99 "relevance": {

100 "topic": "Stripe",

101 "signals": {

102 "manifestDeps": [

103 {

104 "file": "[/\\\\]package\\.json$",

105 "pattern": "\"stripe\"\\s*:"

106 }

107 ]

108 }

109 }

110}

111```

112 

113<Note>

114 Claude Code ignore les champs inconnus sous `relevance` et `relevance.signals` au moment du chargement, afin que les anciens clients continuent à charger votre marketplace.

115</Note>

116 

117<h2 id="enable-suggestions-in-managed-settings">

118 Activer les suggestions dans les paramètres gérés

119</h2>

120 

121Déclarer `relevance` dans `marketplace.json` ne suffit pas en soi. Un administrateur doit autoriser la marketplace dans les [paramètres gérés](/docs/fr/managed-settings) avant que ses suggestions n'apparaissent aux utilisateurs.

122 

123Ajoutez le nom de la marketplace à `pluginSuggestionMarketplaces`. Pour toute marketplace autre que la marketplace officielle d'Anthropic, déclarez également la source de la marketplace dans les mêmes paramètres gérés, soit comme entrée de ce nom dans `extraKnownMarketplaces`, soit comme entrée dans `strictKnownMarketplaces`. Le nom autorisé est ignoré si la marketplace enregistrée sur la machine provient d'une source différente. Cela empêche une source non liée de s'enregistrer sous un nom autorisé pour que ses plugins soient suggérés dans toute votre organisation.

124 

125Le `managed-settings.json` suivant enregistre une marketplace d'organisation à partir d'un référentiel GitHub et active ses suggestions :

126 

127```json theme={null}

128{

129 "extraKnownMarketplaces": {

130 "acme-corp-plugins": {

131 "source": {

132 "source": "github",

133 "repo": "acme-corp/claude-plugins"

134 }

135 }

136 },

137 "pluginSuggestionMarketplaces": ["acme-corp-plugins"]

138}

139```

140 

141La marketplace officielle est exempte de l'exigence de déclaration de source car son nom ne peut s'enregistrer que depuis la source officielle d'Anthropic. L'autorisation du nom seul est suffisante :

142 

143```json theme={null}

144{

145 "pluginSuggestionMarketplaces": ["claude-plugins-official"]

146}

147```

148 

149<h2 id="what-the-user-sees">

150 Ce que voit l'utilisateur

151</h2>

152 

153Lorsqu'un signal correspond pendant une session, le conseil du spinner se lit comme suit :

154 

155```text theme={null}

156Working with Terraform? Install the terraform-helpers plugin:

157/plugin install terraform-helpers@acme-corp-plugins

158```

159 

160Au démarrage de la session, un signal `cwd` correspondant affiche la notification d'une ligne :

161 

162```text theme={null}

163plugin suggestion: terraform-helpers@acme-corp-plugins · /plugin

164```

165 

166La suggestion d'un plugin donné apparaît au maximum une fois tous les trois sessions dans le conseil du spinner et la notification de démarrage de session combinés, et aucun ne se répète une fois que le plugin est installé. La notification de démarrage de session s'arrête également d'apparaître après que la suggestion ait été affichée deux fois.

167 

168Dans l'onglet Discover de `/plugin`, le plugin est épinglé au-dessus des autres résultats avec une annotation qui nomme le signal correspondant, telle que `suggested for this directory` ou `suggested for terraform commands`. L'onglet Discover épingle un plugin donné une fois ; les visites ultérieures le listent dans l'ordre normal.

169 

170<h2 id="validate-your-marketplace">

171 Valider votre marketplace

172</h2>

173 

174Exécutez `claude plugin validate` sur votre répertoire de marketplace pour vérifier le bloc `relevance` avant la publication :

175 

176```

177claude plugin validate ./my-marketplace

178```

179 

180Le validateur signale les clés inconnues sous `relevance` et `relevance.signals` comme des avertissements, signale une valeur `relevance` qui n'est pas un objet, et rejette une entrée `signals.hosts` qui inclut un schéma, un port ou un chemin.

181 

182<h2 id="see-also">

183 Voir aussi

184</h2>

185 

186* [Créer et distribuer une marketplace de plugins](/docs/fr/plugin-marketplaces) : construisez la marketplace qui héberge vos plugins

187* [Recommander votre plugin à partir de votre CLI](/docs/fr/plugin-hints) : invitez les utilisateurs à partir de votre propre CLI au lieu de partir des signaux de session de Claude Code

188* [Tous les paramètres](/docs/fr/settings-reference#pluginsuggestionmarketplaces) : `pluginSuggestionMarketplaces` et `extraKnownMarketplaces`

plugins.md +0 −527 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Créer des plugins

6 

7> Créez des plugins personnalisés pour étendre Claude Code avec des skills, des agents, des hooks et des serveurs MCP.

8 

9Les plugins vous permettent d'étendre Claude Code avec des fonctionnalités personnalisées qui peuvent être partagées entre les projets et les équipes. Ce guide couvre la création de vos propres plugins avec des skills, des agents, des hooks et des serveurs MCP.

10 

11Vous cherchez à installer des plugins existants ? Consultez [Découvrir et installer des plugins](/docs/fr/discover-plugins). Pour les spécifications techniques complètes, consultez [Référence des plugins](/docs/fr/plugins-reference).

12 

13<h2 id="when-to-use-plugins-vs-standalone-configuration">

14 Quand utiliser les plugins par rapport à la configuration autonome

15</h2>

16 

17Claude Code prend en charge deux façons d'ajouter des skills, des agents et des hooks personnalisés :

18 

19| Approche | Noms des skills | Idéal pour |

20| :------------------------------------------------------------------------------------------------- | :------------------- | :------------------------------------------------------------------------------------------------------------ |

21| **Autonome** (répertoire `.claude/`) | `/hello` | Flux de travail personnels, personnalisations spécifiques au projet, expériences rapides |

22| **Plugins** (répertoires avec skills, agents, hooks, ou un manifeste `.claude-plugin/plugin.json`) | `/plugin-name:hello` | Partage avec les coéquipiers, distribution à la communauté, versions publiées, réutilisable entre les projets |

23 

24<Tip>

25 Commencez par la configuration autonome dans `.claude/` pour une itération rapide, puis [convertissez en plugin](#convert-existing-configurations-to-plugins) quand vous êtes prêt à partager.

26</Tip>

27 

28<h2 id="quickstart">

29 Démarrage rapide

30</h2>

31 

32Ce démarrage rapide vous guide dans la création d'un plugin avec un skill personnalisé. Vous allez créer un manifeste (le fichier de configuration qui définit votre plugin), ajouter un skill et le tester localement en utilisant le drapeau `--plugin-dir`.

33 

34<h3 id="prerequisites">

35 Prérequis

36</h3>

37 

38* Claude Code [installé et authentifié](/docs/fr/quickstart#step-1-install-claude-code)

39 

40<h3 id="create-your-first-plugin">

41 Créez votre premier plugin

42</h3>

43 

44<Steps>

45 <Step title="Créez le répertoire du plugin">

46 Chaque plugin se trouve dans son propre répertoire contenant vos skills, agents ou hooks, optionnellement aux côtés d'un manifeste `.claude-plugin/plugin.json`. L'emplacement n'a pas d'importance pour ce démarrage rapide car vous pointerez Claude Code vers le répertoire avec `--plugin-dir` à l'étape de test. Créez-le n'importe où, par exemple dans un dossier de travail ou un répertoire de projets :

47 

48 ```bash theme={null}

49 mkdir my-first-plugin

50 ```

51 

52 Les étapes restantes s'exécutent à partir du répertoire parent et font référence à des chemins comme `my-first-plugin/...` relatifs à celui-ci.

53 </Step>

54 

55 <Step title="Créez le manifeste du plugin">

56 Le fichier manifeste à `.claude-plugin/plugin.json` définit l'identité de votre plugin : son nom, sa description et sa version. Claude Code utilise ces métadonnées pour afficher votre plugin dans le gestionnaire de plugins.

57 

58 Créez le répertoire `.claude-plugin` à l'intérieur de votre dossier de plugin :

59 

60 ```bash theme={null}

61 mkdir my-first-plugin/.claude-plugin

62 ```

63 

64 Ensuite, créez `my-first-plugin/.claude-plugin/plugin.json` avec ce contenu :

65 

66 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

67 {

68 "name": "my-first-plugin",

69 "description": "A greeting plugin to learn the basics",

70 "version": "1.0.0",

71 "author": {

72 "name": "Your Name"

73 }

74 }

75 ```

76 

77 | Champ | Objectif |

78 | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

79 | `name` | Identifiant unique et espace de noms du skill. Les skills sont préfixés avec ceci (par exemple, `/my-first-plugin:hello`). |

80 | `description` | Affiché dans le gestionnaire de plugins lors de la navigation ou de l'installation de plugins. |

81 | `version` | Optionnel. S'il est défini, les utilisateurs ne reçoivent les mises à jour que lorsque vous augmentez ce champ, sauf pour une [source `command`](/docs/fr/plugin-marketplaces#command-sources) ou un plugin [chargé sur place](/docs/fr/plugins-reference#plugin-caching-and-file-resolution) ; consultez [gestion des versions](/docs/fr/plugins-reference#version-management). S'il est omis, la version provient de la source suivante dans [gestion des versions](/docs/fr/plugins-reference#version-management). |

82 | `author` | Optionnel. Utile pour l'attribution. |

83 

84 Pour les champs supplémentaires comme `homepage`, `repository` et `license`, consultez le [schéma manifeste complet](/docs/fr/plugins-reference#plugin-manifest-schema).

85 </Step>

86 

87 <Step title="Ajoutez un skill">

88 Les skills se trouvent dans le répertoire `skills/`. Chaque skill est un dossier contenant un fichier `SKILL.md`. Le nom du dossier devient le nom du skill, préfixé par l'espace de noms du plugin (`hello/` dans un plugin nommé `my-first-plugin` crée `/my-first-plugin:hello`).

89 

90 Créez un répertoire de skill dans votre dossier de plugin :

91 

92 ```bash theme={null}

93 mkdir -p my-first-plugin/skills/hello

94 ```

95 

96 Ensuite, créez `my-first-plugin/skills/hello/SKILL.md` avec ce contenu :

97 

98 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

99 ---

100 description: Greet the user with a friendly message

101 disable-model-invocation: true

102 ---

103 

104 Greet the user warmly and ask how you can help them today.

105 ```

106 </Step>

107 

108 <Step title="Testez votre plugin">

109 Exécutez Claude Code avec le drapeau `--plugin-dir` pour charger votre plugin :

110 

111 ```bash theme={null}

112 claude --plugin-dir ./my-first-plugin

113 ```

114 

115 Une fois Claude Code démarré, essayez votre nouveau skill :

116 

117 ```shell theme={null}

118 /my-first-plugin:hello

119 ```

120 

121 Vous verrez Claude répondre avec un salut. Exécutez `/help` et ouvrez l'onglet **Commandes personnalisées** pour voir votre skill listé sous l'espace de noms du plugin.

122 

123 <Note>

124 **Pourquoi l'espace de noms ?** Les skills des plugins sont toujours avec espace de noms (comme `/my-first-plugin:hello`) pour prévenir les conflits quand plusieurs plugins ont des skills avec le même nom.

125 

126 Pour changer le préfixe d'espace de noms, mettez à jour le champ `name` dans `plugin.json`.

127 </Note>

128 </Step>

129 

130 <Step title="Ajoutez des arguments au skill">

131 Rendez votre skill dynamique en acceptant l'entrée de l'utilisateur. L'espace réservé `$ARGUMENTS` capture tout texte que l'utilisateur fournit après le nom du skill.

132 

133 Mettez à jour votre fichier `SKILL.md` :

134 

135 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

136 ---

137 description: Greet the user with a personalized message

138 ---

139 

140 # Hello Skill

141 

142 Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.

143 ```

144 

145 Exécutez `/reload-plugins` pour récupérer les modifications. Ensuite, essayez le skill avec votre nom :

146 

147 ```shell theme={null}

148 /my-first-plugin:hello Alex

149 ```

150 

151 Claude vous saluera par votre nom. Pour plus d'informations sur la transmission d'arguments aux skills, consultez [Skills](/docs/fr/skills#pass-arguments-to-skills).

152 </Step>

153</Steps>

154 

155<Tip>

156 Le drapeau `--plugin-dir` est utile pour le développement et les tests. Quand vous êtes prêt à partager votre plugin avec d'autres, consultez [Créer et distribuer une marketplace de plugins](/docs/fr/plugin-marketplaces).

157</Tip>

158 

159<h2 id="develop-a-plugin-in-your-skills-directory">

160 Développez un plugin dans votre répertoire de skills

161</h2>

162 

163Au lieu de passer `--plugin-dir` à chaque lancement, vous pouvez garder un plugin dans votre répertoire de skills et faire en sorte que Claude Code le charge automatiquement. `claude plugin init` en crée un :

164 

165```bash theme={null}

166claude plugin init my-tool

167```

168 

169Cela crée `~/.claude/skills/my-tool/` avec un manifeste `.claude-plugin/plugin.json` et un `SKILL.md` de démarrage. À la session suivante, il se charge en tant que `my-tool@skills-dir` sans étape de marketplace ou d'installation.

170 

171Pour les règles de chargement automatique, la portée personnelle par rapport à la portée du projet, l'exigence de confiance de l'espace de travail et comment mettre à jour ou supprimer un, consultez [Plugins du répertoire de skills](/docs/fr/plugins-reference#skills-directory-plugins).

172 

173<h2 id="plugin-structure-overview">

174 Aperçu de la structure du plugin

175</h2>

176 

177Vous avez créé un plugin avec un skill, mais les plugins peuvent inclure beaucoup plus : des agents personnalisés, des hooks, des serveurs MCP, des serveurs LSP et des moniteurs en arrière-plan.

178 

179<Warning>

180 **Erreur courante** : Ne mettez pas `commands/`, `agents/`, `skills/` ou `hooks/` à l'intérieur du répertoire `.claude-plugin/`. Seul `plugin.json` va à l'intérieur de `.claude-plugin/`. Tous les autres répertoires doivent être au niveau racine du plugin.

181 

182 La racine du plugin est le répertoire propre du plugin individuel, tel que `my-first-plugin/` du [démarrage rapide](#quickstart). Ce n'est jamais `~/.claude/`. Par exemple, Claude Code ne lit pas un `.mcp.json` placé à `~/.claude/.mcp.json`.

183</Warning>

184 

185| Répertoire | Emplacement | Objectif |

186| :---------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

187| `.claude-plugin/` | Racine du plugin | Contient le manifeste `plugin.json` (optionnel si les composants utilisent les emplacements par défaut) |

188| `skills/` | Racine du plugin | Skills en tant que répertoires `<name>/SKILL.md` |

189| `commands/` | Racine du plugin | Skills en tant que fichiers Markdown plats. Utilisez `skills/` pour les nouveaux plugins |

190| `agents/` | Racine du plugin | Définitions d'agents personnalisés |

191| `hooks/` | Racine du plugin | Gestionnaires d'événements dans `hooks.json` |

192| `.mcp.json` | Racine du plugin | Configurations du serveur MCP |

193| `.lsp.json` | Racine du plugin | Configurations du serveur LSP pour l'intelligence du code |

194| `monitors/` | Racine du plugin | Configurations du moniteur en arrière-plan dans `monitors.json` |

195| `bin/` | Racine du plugin | Exécutables ajoutés au `PATH` de l'outil Bash tandis que le plugin est activé. Vous ne pouvez pas inclure ce répertoire dans un plugin que vous [distribuez via les paramètres d'organisation claude.ai](/docs/fr/plugin-marketplaces#keep-executables-out-of-the-top-level-bin-directory) |

196| `settings.json` | Racine du plugin | [Paramètres](/docs/fr/settings) par défaut appliqués quand le plugin est activé |

197 

198Un plugin qui fournit exactement un skill peut placer `SKILL.md` directement à la racine du plugin au lieu de créer un répertoire `skills/`. Claude Code le charge en tant que skill unique et utilise le champ `name` du frontmatter pour le nom d'invocation. Utilisez la disposition `skills/` pour les plugins qui pourraient croître pour avoir plus d'un skill.

199 

200<h2 id="develop-more-complex-plugins">

201 Développer des plugins plus complexes

202</h2>

203 

204Une fois que vous êtes à l'aise avec les plugins de base, vous pouvez créer des extensions plus sophistiquées.

205 

206<h3 id="add-skills-to-your-plugin">

207 Ajoutez des Skills à votre plugin

208</h3>

209 

210Les plugins peuvent inclure des [Agent Skills](/docs/fr/skills) pour étendre les capacités de Claude. Les skills sont invoqués par le modèle : Claude les utilise automatiquement en fonction du contexte de la tâche.

211 

212Ajoutez un répertoire `skills/` à la racine de votre plugin avec des dossiers de Skill contenant des fichiers `SKILL.md` :

213 

214```text theme={null}

215my-plugin/

216├── .claude-plugin/

217│ └── plugin.json

218└── skills/

219 └── code-review/

220 └── SKILL.md

221```

222 

223Chaque `SKILL.md` contient un frontmatter YAML et des instructions. Incluez une `description` pour que Claude sache quand utiliser le skill :

224 

225```yaml theme={null}

226description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.

227 

228When reviewing code, check for:

2291. Code organization and structure

2302. Error handling

2313. Security concerns

2324. Test coverage

233```

234 

235Après l'installation du plugin, vérifiez le résumé d'installation : s'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications du plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) pour charger les Skills dans votre session actuelle. Pour des conseils complets sur la création de Skills incluant la divulgation progressive et les restrictions d'outils, consultez [Agent Skills](/docs/fr/skills).

236 

237<h3 id="add-lsp-servers-to-your-plugin">

238 Ajoutez des serveurs LSP à votre plugin

239</h3>

240 

241<Tip>

242 Pour les langages courants comme TypeScript, Python et Rust, installez les plugins LSP pré-construits à partir de la marketplace officielle. Créez des plugins LSP personnalisés uniquement quand vous avez besoin de support pour des langages non encore couverts.

243</Tip>

244 

245Les plugins LSP (Language Server Protocol) donnent à Claude l'intelligence du code en temps réel. Si vous avez besoin de supporter un langage qui n'a pas de plugin LSP officiel, vous pouvez en créer un en ajoutant un fichier `.lsp.json` à votre plugin :

246 

247```json .lsp.json theme={null}

248{

249 "go": {

250 "command": "gopls",

251 "args": ["serve"],

252 "extensionToLanguage": {

253 ".go": "go"

254 }

255 }

256}

257```

258 

259Les utilisateurs qui installent votre plugin doivent avoir le binaire du serveur de langage installé sur leur machine.

260 

261Pour confirmer que le serveur démarre, lancez Claude Code avec le plugin activé et vérifiez l'onglet Erreurs de `/plugin` : un serveur de langage qui échoue au démarrage apparaît là, par exemple avec `Executable not found in $PATH` quand le binaire n'est pas installé. Une entrée avec une configuration invalide est ignorée à la place ; exécutez `claude --debug` pour voir pourquoi.

262 

263Pour les options de configuration LSP complètes, consultez [Serveurs LSP](/docs/fr/plugins-reference#lsp-servers).

264 

265<h3 id="add-background-monitors-to-your-plugin">

266 Ajoutez des moniteurs en arrière-plan à votre plugin

267</h3>

268 

269Les moniteurs en arrière-plan permettent à votre plugin de surveiller les journaux, les fichiers ou l'état externe en arrière-plan et de notifier Claude à mesure que les événements arrivent. Claude Code démarre automatiquement chaque moniteur quand le plugin est actif, donc vous n'avez pas besoin d'instruire Claude pour démarrer la surveillance.

270 

271Ajoutez un fichier `monitors/monitors.json` à la racine du plugin avec un tableau d'entrées de moniteur :

272 

273```json monitors/monitors.json theme={null}

274[

275 {

276 "name": "error-log",

277 "command": "tail -F ./logs/error.log",

278 "description": "Application error log"

279 }

280]

281```

282 

283Chaque ligne stdout de `command` est livrée à Claude en tant que notification pendant la session. Pour le schéma complet, incluant le déclencheur `when` et la substitution de variables, consultez [Moniteurs](/docs/fr/plugins-reference#monitors).

284 

285<h3 id="ship-default-settings-with-your-plugin">

286 Livrez les paramètres par défaut avec votre plugin

287</h3>

288 

289Les plugins peuvent inclure un fichier `settings.json` à la racine du plugin pour appliquer la configuration par défaut quand le plugin est activé. Actuellement, seules les clés `agent` et `subagentStatusLine` sont supportées.

290 

291Définir `agent` active l'un des [agents personnalisés](/docs/fr/sub-agents) du plugin en tant que thread principal, en appliquant son invite système, ses restrictions d'outils et son modèle. Cela permet à un plugin de changer le comportement par défaut de Claude Code quand il est activé.

292 

293```json settings.json theme={null}

294{

295 "agent": "security-reviewer"

296}

297```

298 

299Cet exemple active l'agent `security-reviewer` défini dans le répertoire `agents/` du plugin. Les paramètres de `settings.json` ont priorité sur les `settings` déclarés dans `plugin.json`. Les clés inconnues sont silencieusement ignorées.

300 

301<h3 id="organize-complex-plugins">

302 Organisez les plugins complexes

303</h3>

304 

305Pour les plugins avec de nombreux composants, organisez votre structure de répertoires par fonctionnalité. Pour les dispositions de répertoires complètes et les modèles d'organisation, consultez [Structure du répertoire du plugin](/docs/fr/plugins-reference#plugin-directory-structure).

306 

307<h3 id="test-your-plugins-locally">

308 Testez vos plugins localement

309</h3>

310 

311Utilisez le drapeau `--plugin-dir` pour tester les plugins pendant le développement. Cela charge votre plugin directement sans nécessiter d'installation.

312 

313```bash theme={null}

314claude --plugin-dir ./my-plugin

315```

316 

317Le drapeau accepte également une archive `.zip` du répertoire du plugin.

318 

319```bash theme={null}

320claude --plugin-dir ./my-plugin.zip

321```

322 

323Quand un plugin `--plugin-dir` a le même nom qu'un plugin marketplace installé, la copie locale prend la priorité pour cette session. Cela vous permet de tester les modifications d'un plugin que vous avez déjà installé sans le désinstaller d'abord. L'exception concerne les plugins dont les paramètres gérés forcent l'activation ou la désactivation : `--plugin-dir` ne peut pas les remplacer.

324 

325À mesure que vous apportez des modifications à votre plugin, exécutez `/reload-plugins` pour récupérer les mises à jour sans redémarrer. Cela recharge les plugins, les skills, les agents, les hooks, les serveurs MCP du plugin et les serveurs LSP du plugin ; dans une session sans terminal interactif, les modifications du serveur MCP du plugin [attendent votre prochaine session](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting). Testez vos composants de plugin :

326 

327* Essayez vos skills avec `/plugin-name:skill-name`

328* Vérifiez que les agents apparaissent dans `/context` sous Agents personnalisés, ou mentionnez-en un avec le symbole @ par son nom délimité

329* Déclenchez l'événement que chaque hook correspond, comme demander à Claude d'éditer un fichier pour un hook `PostToolUse`, et confirmez son effet. Claude Code enregistre quels hooks ont correspondu, leurs codes de sortie et leur sortie dans le [journal de débogage](/docs/fr/hooks#debug-hooks)

330 

331<Tip>

332 Vous pouvez charger plusieurs plugins à la fois en spécifiant le drapeau plusieurs fois :

333 

334 ```bash theme={null}

335 claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

336 ```

337 

338 Pour tester un plugin avec un plugin dont il dépend, consultez [Testez un plugin et sa dépendance localement](/docs/fr/plugin-dependencies#test-a-plugin-and-its-dependency-locally).

339</Tip>

340 

341Pour charger les plugins dans une session où vous ne pouvez pas ajouter le drapeau, listez leurs chemins absolus dans la variable d'environnement [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/fr/env-vars#variables) à la place. Claude Code charge chaque chemin comme il charge un chemin `--plugin-dir`. Ces plugins se chargent en plus de ceux que vous passez avec `--plugin-dir`. [Les paramètres de projet et locaux ne peuvent pas définir cette variable](/docs/fr/settings-reference#variables-claude-code-ignores-in-env). `CLAUDE_CODE_PLUGIN_DIRS` nécessite Claude Code v2.1.280 ou ultérieur.

342 

343Essayer le plugin avec `--plugin-dir` vous indique qu'il peut fonctionner. Pour savoir à quelle fréquence Claude y recourt réellement et obtient le bon résultat, exécutez-le sur un ensemble de prompts de test avec [`claude plugin eval`](/docs/fr/plugin-evals). Chaque prompt s'exécute plusieurs fois avec et sans le plugin chargé, afin que vous puissiez voir ce que le plugin contribue et détecter les régressions quand vous le modifiez ou qu'un nouveau modèle est lancé.

344 

345Pour charger plusieurs plugins à partir d'un seul endroit, passez un dossier qui les contient, comme `--plugin-dir ./plugins`. Le chargement d'un dossier de plugins nécessite Claude Code v2.1.265 ou ultérieur. Claude Code lit le niveau supérieur du dossier pour décider quels plugins charger, et dans une session interactive, il surveille également le dossier pour les modifications ultérieures :

346 

347* **Ce qui se charge** : si le dossier n'a pas de manifeste ou de composants de plugin à son niveau supérieur, Claude Code le traite comme un dossier de plugins. Chaque sous-dossier immédiat qui a un manifeste `.claude-plugin/plugin.json` se charge en tant que plugin séparé. Claude Code ignore tout le reste dans le dossier sans signaler d'erreur, y compris les plugins qui n'ont pas de manifeste.

348* **Modifications pendant une session interactive** : un sous-dossier que vous ajoutez se charge en tant que nouveau plugin une fois que son manifeste est en place, et quand vous supprimez un sous-dossier, son plugin se décharge. Claude Code affiche une ligne dans la session pour chaque modification. Si l'application d'une modification en milieu de conversation [invaliderait le cache d'invite](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin), Claude Code la retient, et la ligne dit d'exécuter `/reload-plugins` pour l'appliquer.

349 

350Pour tester un plugin qui est déjà empaqueté en tant qu'archive `.zip` et hébergé à une URL, comme un artefact de build CI, utilisez `--plugin-url` à la place. Claude Code récupère l'archive au démarrage et la charge pour cette session uniquement. Si Claude Code ne peut pas récupérer l'archive, ou que l'archive est invalide, il démarre sans le plugin et enregistre une erreur de chargement de plugin que vous pouvez examiner dans l'onglet **Erreurs** du gestionnaire `/plugin`. Les mêmes [considérations de confiance](/docs/fr/discover-plugins#security) s'appliquent que pour toute source de plugin : pointez uniquement ce drapeau vers des archives que vous contrôlez ou en lesquelles vous avez confiance.

351 

352Pour charger plusieurs plugins, répétez le drapeau pour chaque URL :

353 

354```bash theme={null}

355claude --plugin-url https://example.com/my-plugin.zip --plugin-url https://example.com/other.zip

356```

357 

358Ou passez des URL séparées par des espaces en tant qu'un seul argument entre guillemets :

359 

360```bash theme={null}

361claude --plugin-url "https://example.com/my-plugin.zip https://example.com/other.zip"

362```

363 

364<h3 id="debug-plugin-issues">

365 Déboguez les problèmes de plugin

366</h3>

367 

368Si votre plugin ne fonctionne pas comme prévu :

369 

3701. **Vérifiez la structure** : Assurez-vous que vos répertoires sont à la racine du plugin, pas à l'intérieur de `.claude-plugin/`

3712. **Testez les composants individuellement** : Vérifiez chaque skill, agent et hook séparément

3723. **Utilisez les outils de validation et de débogage** : Consultez [Outils de débogage et de développement](/docs/fr/plugins-reference#debugging-and-development-tools) pour les commandes CLI et les techniques de dépannage

373 

374<h3 id="share-your-plugins">

375 Partagez vos plugins

376</h3>

377 

378Quand votre plugin est prêt à être partagé :

379 

3801. **Ajoutez de la documentation** : Incluez un `README.md` avec les instructions d'installation et d'utilisation

3812. **Choisissez une stratégie de versioning** : Décidez si vous allez définir une `version` explicite ou vous fier au fallback décrit dans [gestion des versions](/docs/fr/plugins-reference#version-management).

3823. **Créez ou utilisez une marketplace** : Distribuez via des [marketplaces de plugins](/docs/fr/plugin-marketplaces) pour l'installation

3834. **Testez avec d'autres** : Faites tester le plugin par les membres de l'équipe avant une distribution plus large

384 

385Une fois que votre plugin est dans une marketplace, d'autres peuvent l'installer en utilisant les instructions dans [Découvrir et installer des plugins](/docs/fr/discover-plugins). Pour garder un plugin interne à votre équipe, hébergez la marketplace dans un [référentiel privé](/docs/fr/plugin-marketplaces#private-repositories).

386 

387<h3 id="submit-your-plugin-to-the-community-marketplace">

388 Soumettez votre plugin à la marketplace communautaire

389</h3>

390 

391Anthropic maintient deux marketplaces publiques pour les plugins Claude Code :

392 

393* **`claude-plugins-official`** : un ensemble organisé de plugins maintenus par Anthropic. Claude Code l'enregistre automatiquement la première fois que vous démarrez Claude Code de manière interactive. Si vous exécutez Claude Code de manière non-interactive avant ce premier lancement interactif, ou si une [politique de marketplace](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) a bloqué une tentative antérieure, enregistrez-le vous-même avec `claude plugin marketplace add anthropics/claude-plugins-official`.

394* **`claude-community`** : la marketplace communautaire publique où les soumissions tierces arrivent après examen. Les utilisateurs l'ajoutent avec `/plugin marketplace add anthropics/claude-plugins-community` et l'installent en tant que `@claude-community`.

395 

396Pour soumettre votre plugin pour examen de la marketplace communautaire, utilisez l'un des formulaires dans l'application :

397 

398* **claude.ai** : [claude.ai/admin-settings/directory/submissions/plugins/new](https://claude.ai/admin-settings/directory/submissions/plugins/new)

399* **Console** : [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

400 

401Le formulaire claude.ai nécessite une organisation Team ou Enterprise et un accès à la gestion du répertoire ; les propriétaires d'organisation ont cet accès par défaut. Les auteurs individuels qui ne font pas partie d'une organisation Team ou Enterprise peuvent utiliser le formulaire Console à la place.

402 

403Exécutez `claude plugin validate ./your-plugin` localement avant de soumettre, en remplaçant `./your-plugin` par le chemin vers votre répertoire de plugin. Le pipeline d'examen exécute la même vérification sur chaque soumission, ainsi qu'un dépistage de sécurité automatisé. Quand la validation réussit, Claude Code affiche `✔ Validation passed`, ou `✔ Validation passed with warnings` s'il y a des avertissements. Les avertissements ne font pas échouer la validation ; ajoutez `--strict` pour les traiter comme des erreurs.

404 

405Les plugins approuvés sont épinglés à un SHA de commit spécifique dans le catalogue [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community), et CI augmente automatiquement l'épingle à mesure que vous poussez de nouveaux commits vers votre référentiel. Le catalogue public se synchronise chaque nuit à partir du pipeline d'examen, il peut donc y avoir un délai entre l'approbation et l'apparition de votre plugin dans `marketplace.json`. Pour vérifier si votre plugin est installable, recherchez son nom dans le [catalogue communautaire](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json).

406 

407La marketplace officielle, `claude-plugins-official`, est organisée séparément. Anthropic décide quels plugins inclure à sa discrétion. Il n'y a pas de processus de candidature, et le formulaire de soumission n'ajoute pas de plugins à la marketplace officielle.

408 

409Si Anthropic liste votre plugin dans la marketplace officielle, votre CLI peut inviter les utilisateurs de Claude Code à l'installer. Consultez [Recommander votre plugin à partir de votre CLI](/docs/fr/plugin-hints).

410 

411<h2 id="convert-existing-configurations-to-plugins">

412 Convertir les configurations existantes en plugins

413</h2>

414 

415Si vous avez déjà des skills ou des hooks dans votre répertoire `.claude/`, vous pouvez les convertir en plugin pour un partage et une distribution plus faciles.

416 

417<h3 id="migration-steps">

418 Étapes de migration

419</h3>

420 

421<Steps>

422 <Step title="Créez la structure du plugin">

423 Créez un nouveau répertoire de plugin dans la racine de votre projet, à côté du dossier `.claude/` existant, afin que les chemins `cp` relatifs à l'étape suivante se résolvent :

424 

425 ```bash theme={null}

426 mkdir -p my-plugin/.claude-plugin

427 ```

428 

429 Créez le fichier manifeste à `my-plugin/.claude-plugin/plugin.json` :

430 

431 ```json my-plugin/.claude-plugin/plugin.json theme={null}

432 {

433 "name": "my-plugin",

434 "description": "Migrated from standalone configuration",

435 "version": "1.0.0"

436 }

437 ```

438 </Step>

439 

440 <Step title="Copiez vos fichiers existants">

441 Copiez chaque répertoire de configuration que vous avez dans la racine du plugin. Vous n'avez peut-être pas les trois : si un répertoire n'existe pas, `cp` affiche `No such file or directory` et ne copie rien, donc ignorez cette commande ou ignorez l'erreur.

442 

443 ```bash theme={null}

444 cp -r .claude/commands my-plugin/

445 

446 cp -r .claude/agents my-plugin/

447 

448 cp -r .claude/skills my-plugin/

449 ```

450 

451 Votre plugin contient maintenant des copies des répertoires que vous aviez sous `.claude/`. Exécutez `ls my-plugin` pour confirmer : vous devriez voir chaque répertoire que vous avez copié.

452 </Step>

453 

454 <Step title="Migrez les hooks">

455 Si vous avez des hooks dans vos paramètres, créez un répertoire de hooks :

456 

457 ```bash theme={null}

458 mkdir my-plugin/hooks

459 ```

460 

461 Créez `my-plugin/hooks/hooks.json` avec votre configuration de hooks. Copiez l'objet `hooks` de votre `.claude/settings.json` ou `settings.local.json`, car le format est le même. La commande reçoit l'entrée du hook en tant que JSON sur stdin, donc utilisez `jq` pour extraire le chemin du fichier :

462 

463 ```json my-plugin/hooks/hooks.json theme={null}

464 {

465 "hooks": {

466 "PostToolUse": [

467 {

468 "matcher": "Write|Edit",

469 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

470 }

471 ]

472 }

473 }

474 ```

475 </Step>

476 

477 <Step title="Testez votre plugin migré">

478 Chargez votre plugin pour vérifier que tout fonctionne :

479 

480 ```bash theme={null}

481 claude --plugin-dir ./my-plugin

482 ```

483 

484 Testez chaque composant : exécutez vos commandes, vérifiez que les agents apparaissent dans `/context`, et déclenchez l'événement que chaque hook correspond pour confirmer son effet. Claude Code enregistre les hooks qui ont correspondu et comment ils se sont terminés dans le [journal de débogage](/docs/fr/hooks#debug-hooks).

485 </Step>

486</Steps>

487 

488<h3 id="what-changes-when-migrating">

489 Ce qui change lors de la migration

490</h3>

491 

492| Autonome (`.claude/`) | Plugin |

493| :----------------------------------------- | :------------------------------------- |

494| Disponible uniquement dans un projet | Peut être partagé via des marketplaces |

495| Fichiers dans `.claude/commands/` | Fichiers dans `plugin-name/commands/` |

496| Hooks dans `settings.json` | Hooks dans `hooks/hooks.json` |

497| Doit être copié manuellement pour partager | Installer avec `/plugin install` |

498 

499<Note>

500 Après la migration, supprimez les fichiers originaux de `.claude/` pour éviter les doublons. Les définitions d'agents du projet et de l'utilisateur dans `.claude/agents/` remplacent les agents du plugin portant le même nom, donc la version du plugin ne prend effet qu'une fois que les originaux sont supprimés. Les skills du plugin sont espacés de noms sous la forme `/plugin-name:skill-name`, donc l'original `/skill-name` et la copie du plugin restent tous deux disponibles plutôt que l'un remplaçant l'autre.

501</Note>

502 

503<h2 id="next-steps">

504 Prochaines étapes

505</h2>

506 

507Maintenant que vous comprenez le système de plugins de Claude Code, voici les chemins suggérés pour différents objectifs :

508 

509<h3 id="for-plugin-users">

510 Pour les utilisateurs de plugins

511</h3>

512 

513* [Découvrir et installer des plugins](/docs/fr/discover-plugins) : parcourir les marketplaces et installer des plugins

514* [Configurer les marketplaces d'équipe](/docs/fr/discover-plugins#configure-team-marketplaces) : configurer les plugins au niveau du référentiel pour votre équipe

515 

516<h3 id="for-plugin-developers">

517 Pour les développeurs de plugins

518</h3>

519 

520* [Tester les plugins avec des evals](/docs/fr/plugin-evals) : mesurer ce que votre plugin change et gater CI sur celui-ci

521* [Créer et distribuer une marketplace](/docs/fr/plugin-marketplaces) : empaqueter et partager vos plugins

522* [Référence des plugins](/docs/fr/plugins-reference) : spécifications techniques complètes

523* Approfondissez les composants spécifiques du plugin :

524 * [Skills](/docs/fr/skills) : détails du développement des skills

525 * [Subagents](/docs/fr/sub-agents) : configuration et capacités des agents

526 * [Hooks](/docs/fr/hooks) : gestion des événements et automatisation

527 * [MCP](/docs/fr/mcp) : intégration d'outils externes

plugins-reference.md +0 −1642 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Référence des plugins

6 

7> Référence technique complète pour le système de plugins Claude Code, incluant les schémas, les commandes CLI et les spécifications des composants.

8 

9<Tip>

10 Vous cherchez à installer des plugins ? Consultez [Découvrir et installer des plugins](/docs/fr/discover-plugins). Pour créer des plugins, consultez [Plugins](/docs/fr/plugins). Pour distribuer des plugins, consultez [Marchés de plugins](/docs/fr/plugin-marketplaces).

11</Tip>

12 

13Un **plugin** est un répertoire autonome de composants qui étend Claude Code avec des fonctionnalités personnalisées. Les composants de plugin incluent skills, agents, hooks, serveurs MCP, serveurs LSP et moniteurs.

14 

15<h2 id="plugin-components-reference">

16 Référence des composants de plugin

17</h2>

18 

19<h3 id="skills">

20 Skills

21</h3>

22 

23Les plugins ajoutent des skills à Claude Code, créant des raccourcis `/name` que vous ou Claude pouvez invoquer.

24 

25**Emplacement** : répertoire `skills/` ou `commands/` à la racine du plugin, ou un seul fichier `SKILL.md` à la racine du plugin

26 

27**Format de fichier** : Les skills sont des répertoires avec `SKILL.md` ; les commandes sont de simples fichiers markdown

28 

29**Structure du skill** :

30 

31```text theme={null}

32skills/

33├── pdf-processor/

34│ ├── SKILL.md

35│ ├── reference.md (optional)

36│ └── scripts/ (optional)

37└── code-reviewer/

38 └── SKILL.md

39```

40 

41Les skills et les commandes sont automatiquement découverts lors de l'installation du plugin.

42 

43Si un plugin n'a pas de répertoire `skills/` et pas de champ manifest `skills`, un `SKILL.md` à la racine du plugin est chargé comme un skill unique. Définissez le champ frontmatter `name` pour contrôler le nom d'invocation du skill. Sans cela, Claude Code revient au nom du répertoire d'installation. Pour un plugin [copié dans le cache](#plugin-caching-and-file-resolution), ce nom est une chaîne de version qui change à chaque mise à jour. Pour les plugins qui fournissent plus d'un skill, utilisez la disposition du répertoire `skills/` montrée ci-dessus.

44 

45Dans les skills et commandes de plugin, les champs frontmatter booléens tels que `disable-model-invocation` acceptent `yes`, `no`, `on`, `off`, `1` et `0` dans n'importe quelle casse de lettre, en plus de `true` et `false`. Avant v2.1.218, Claude Code ne reconnaissait que `true` et `false`.

46 

47Pour plus de détails, consultez [Skills](/docs/fr/skills).

48 

49<h3 id="agents">

50 Agents

51</h3>

52 

53Les plugins peuvent fournir des sous-agents spécialisés pour des tâches spécifiques que Claude peut invoquer automatiquement si approprié.

54 

55**Emplacement** : répertoire `agents/` à la racine du plugin

56 

57**Format de fichier** : Fichiers markdown décrivant les capacités de l'agent

58 

59**Structure de l'agent** :

60 

61```markdown theme={null}

62name: agent-name

63description: What this agent specializes in and when Claude should invoke it

64model: sonnet

65effort: medium

66maxTurns: 20

67disallowedTools: Write, Edit

68 

69Detailed system prompt for the agent describing its role, expertise, and behavior.

70```

71 

72<h4 id="plugin-agent-frontmatter">

73 Frontmatter d'agent de plugin

74</h4>

75 

76Un fichier d'agent de plugin utilise les mêmes [champs frontmatter qu'un fichier de sous-agent](/docs/fr/sub-agents#supported-frontmatter-fields), sauf que Claude Code honore seulement certains d'entre eux quand l'agent provient d'un plugin :

77 

78* **Supportés** : `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color` et `experimental`. La seule valeur `isolation` valide est `"worktree"`.

79* **Non supportés, pour des raisons de sécurité** : `hooks`, `mcpServers` et `permissionMode`. Claude Code ignore ces champs lors du chargement d'un agent depuis un plugin. Pour les utiliser, copiez le fichier d'agent dans `.claude/agents/` ou `~/.claude/agents/`.

80* **Non supportés** : `initialPrompt`.

81 

82Vous pouvez placer les fichiers d'agent de plugin dans des sous-dossiers de `agents/`. Claude Code [les charge récursivement](/docs/fr/sub-agents#choose-the-subagent-scope) et joint le nom du plugin, chaque nom de sous-dossier et le nom du fichier avec des deux-points pour former le nom scopé de l'agent. Par exemple, `agents/review/security.md` dans un plugin nommé `my-plugin` se charge comme `my-plugin:review:security`. Deux paramètres changent ce nom :

83 

84* Frontmatter `name` : il remplace uniquement le nom du fichier, donc `name: audit` dans `agents/review/security.md` se charge comme `my-plugin:review:audit`

85* Champ manifest [`agents`](#component-path-fields) : un fichier que vous listez là se charge sans noms de sous-dossier, donc `"agents": "./custom/review/security.md"` se charge comme `my-plugin:security`

86 

87Claude Code charge un agent de plugin même quand son frontmatter n'a pas de `name` ou ne s'analyse pas :

88 

89* Pas de `name` : Claude Code nomme l'agent d'après le fichier, donc `agents/reviewer.md` dans un plugin nommé `my-plugin` se charge comme `my-plugin:reviewer`

90* Frontmatter qui ne s'analyse pas : Claude Code nomme l'agent d'après le fichier, utilise `Agent from my-plugin plugin` comme sa description, et ignore tous les champs du fichier

91 

92En contraste, Claude Code ignore un fichier d'agent de projet, utilisateur ou géré dont le frontmatter n'a pas de `name` ou ne s'analyse pas.

93 

94Pour trouver les fichiers dans le répertoire `agents/` par défaut d'un plugin dont le frontmatter ne s'analyse pas, exécutez `claude plugin validate`. Le chemin que vous passez dépend de si le plugin a un manifest, et les deux exemples utilisent `./my-plugin` comme répertoire du plugin :

95 

96* Un plugin avec un manifest : `claude plugin validate ./my-plugin`

97* Un plugin sans manifest : `claude plugin validate ./my-plugin/agents`. Nécessite Claude Code v2.1.233 ou ultérieur.

98 

99Les agents apparaissent dans la [typeahead @-mention](/docs/fr/sub-agents#invoke-subagents-explicitly) sous leur nom scopé, tel que `my-plugin:code-reviewer`, une fois que le plugin est activé.

100 

101Pour plus de détails, consultez [Sous-agents](/docs/fr/sub-agents).

102 

103<h3 id="hooks">

104 Hooks

105</h3>

106 

107Les plugins peuvent fournir des gestionnaires d'événements qui répondent automatiquement aux événements de Claude Code.

108 

109**Emplacement** : `hooks/hooks.json` à la racine du plugin, ou en ligne dans plugin.json

110 

111**Format** : Configuration JSON avec des matchers d'événements et des actions

112 

113`hooks/hooks.json` peut porter une clé `$schema` de niveau supérieur qui nomme une URL JSON Schema pour l'autocomplétion et la validation de l'éditeur. Claude Code ignore la clé au moment du chargement.

114 

115**Configuration du hook** :

116 

117```json theme={null}

118{

119 "hooks": {

120 "PostToolUse": [

121 {

122 "matcher": "Write|Edit",

123 "hooks": [

124 {

125 "type": "command",

126 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/format-code.sh"

127 }

128 ]

129 }

130 ]

131 }

132}

133```

134 

135Les hooks de plugin répondent aux mêmes événements de cycle de vie que les [hooks définis par l'utilisateur](/docs/fr/hooks) :

136 

137| Événement | Quand il se déclenche |

138| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

139| `SessionStart` | Quand une session commence ou reprend |

140| `Setup` | Quand vous démarrez Claude Code avec `--init-only`, ou avec `--init` ou `--maintenance` en mode `-p`. Pour une préparation unique en CI ou dans les scripts |

141| `UserPromptSubmit` | Quand vous soumettez une invite, avant que Claude la traite |

142| `UserPromptExpansion` | Quand une commande tapée par l'utilisateur se développe en une invite, avant qu'elle n'atteigne Claude. Peut bloquer l'expansion |

143| `PreToolUse` | Avant qu'un appel d'outil s'exécute. Peut le bloquer |

144| `PermissionRequest` | Quand un appel d'outil nécessite une décision de permission |

145| `PermissionDenied` | Quand le mode automatique refuse un appel d'outil, y compris les refus sans verdict du classificateur. Utilisez la sortie JSON `hookSpecificOutput.retry: true` pour indiquer au modèle qu'il peut réessayer l'appel d'outil refusé. Claude Code ignore `retry` quand le classificateur n'a produit aucun verdict |

146| `PostToolUse` | Après qu'un appel d'outil réussisse |

147| `PostToolUseFailure` | Après qu'un appel d'outil échoue |

148| `PostToolBatch` | Après qu'un lot complet d'appels d'outils parallèles se résout, avant l'appel du modèle suivant |

149| `Notification` | Quand Claude Code envoie une notification |

150| `MessageDisplay` | Pendant que le texte du message assistant s'affiche |

151| `SubagentStart` | Quand un sous-agent est généré |

152| `SubagentStop` | Quand un sous-agent se termine |

153| `TaskCreated` | Quand une tâche est en cours de création via `TaskCreate` |

154| `TaskCompleted` | Quand une tâche est marquée comme complétée |

155| `Stop` | Quand Claude finit de répondre |

156| `StopFailure` | Quand le tour se termine en raison d'une erreur API |

157| `TeammateIdle` | Quand un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) est sur le point de devenir inactif |

158| `InstructionsLoaded` | Quand un fichier CLAUDE.md ou `.claude/rules/*.md` est chargé dans le contexte. Se déclenche au démarrage de la session et quand les fichiers sont chargés paresseusement pendant une session |

159| `ConfigChange` | Quand un fichier de configuration change pendant une session |

160| `CwdChanged` | Quand le répertoire de travail change, par exemple quand Claude exécute une commande `cd`. Utile pour la gestion réactive de l'environnement avec des outils comme direnv |

161| `DirectoryAdded` | Quand un répertoire de travail est ajouté en milieu de session via `/add-dir` ou la demande de contrôle SDK `register_repo_root` |

162| `FileChanged` | Quand un fichier surveillé change sur le disque. Le champ `matcher` spécifie les noms de fichiers à surveiller |

163| `WorktreeCreate` | Quand un worktree est en cours de création via `--worktree`, `isolation: "worktree"`, ou pour une session en arrière-plan. Remplace le comportement git par défaut |

164| `WorktreeRemove` | Quand un worktree est supprimé à la sortie de la session, quand un sous-agent se termine, ou quand vous supprimez une session en arrière-plan |

165| `PreCompact` | Avant la compaction du contexte |

166| `PostCompact` | Après la compaction du contexte est complétée |

167| `PreModelSwitch` | Avant que Claude Code applique un changement de modèle que vous ou un client avez demandé. Peut bloquer le changement |

168| `PostModelSwitch` | Après que le modèle de la session change, y compris les changements que Claude Code effectue de lui-même, comme la restauration du modèle quand vous reprenez une session |

169| `Elicitation` | Quand un serveur MCP demande une entrée utilisateur pendant un appel d'outil |

170| `ElicitationResult` | Après qu'un utilisateur réponde à une élicitation MCP, avant que la réponse soit renvoyée au serveur |

171| `SessionEnd` | Quand une session se termine |

172 

173**Types de hook** :

174 

175* `command` : exécuter des commandes shell ou des scripts

176* `http` : envoyer l'événement JSON comme une requête POST à une URL

177* `mcp_tool` : appeler un outil sur un [serveur MCP](/docs/fr/mcp) configuré

178* `prompt` : évaluer un prompt avec un LLM (utilise le placeholder `$ARGUMENTS` pour le contexte)

179* `agent` : exécuter un vérificateur agentic avec des outils pour les tâches de vérification complexes

180 

181Les hooks qui ciblent le [serveur MCP bundlé](#mcp-servers) du plugin doivent utiliser ses noms scopés. Les matchers d'outils et les champs `if` prennent le nom d'outil scopé `mcp__plugin_<plugin-name>_<server-name>__<tool>`, et le champ `server` d'un hook `mcp_tool` prend `plugin:<plugin-name>:<server-name>`. Un matcher écrit contre la clé de serveur nue ne se déclenche jamais. Consultez [Match MCP tools](/docs/fr/hooks#match-mcp-tools) et [Plugin-provided MCP servers](/docs/fr/mcp#plugin-provided-mcp-servers).

182 

183<h3 id="mcp-servers">

184 MCP servers

185</h3>

186 

187Les plugins peuvent bundler des serveurs Model Context Protocol (MCP) pour connecter Claude Code avec des outils et services externes.

188 

189**Emplacement** : `.mcp.json` à la racine du plugin, ou en ligne dans plugin.json

190 

191**Format** : Configuration standard du serveur MCP

192 

193**Configuration du serveur MCP** :

194 

195```json theme={null}

196{

197 "mcpServers": {

198 "plugin-database": {

199 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

200 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

201 "env": {

202 "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"

203 }

204 },

205 "plugin-api-client": {

206 "command": "npx",

207 "args": ["@company/mcp-server", "--plugin-mode"]

208 }

209 }

210}

211```

212 

213**Comportement d'intégration** :

214 

215* Les serveurs MCP de plugin démarrent automatiquement quand le plugin est activé

216* Les serveurs apparaissent comme des outils MCP standard dans la boîte à outils de Claude

217* Les serveurs de plugin peuvent être configurés indépendamment des serveurs MCP utilisateur

218* Si vous exécutez [`/reload-plugins`](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) en milieu de session, Claude Code maintient les connexions actives des serveurs dont la configuration est inchangée

219 

220<h3 id="lsp-servers">

221 LSP servers

222</h3>

223 

224<Tip>

225 Vous cherchez à utiliser des plugins LSP ? Installez-les depuis la marketplace officielle : recherchez « lsp » dans l'onglet Discover `/plugin`. Cette section documente comment créer des plugins LSP pour les langages non couverts par la marketplace officielle.

226</Tip>

227 

228Les plugins peuvent fournir des serveurs [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) pour donner à Claude une [intelligence de code en temps réel](/docs/fr/discover-plugins#code-intelligence) en travaillant sur votre base de code.

229 

230**Emplacement** : `.lsp.json` à la racine du plugin, ou en ligne dans `plugin.json`

231 

232**Format** : Configuration JSON mappant les noms de serveurs de langage à leurs configurations

233 

234**Format du fichier `.lsp.json`** :

235 

236```json theme={null}

237{

238 "go": {

239 "command": "gopls",

240 "args": ["serve"],

241 "extensionToLanguage": {

242 ".go": "go"

243 }

244 }

245}

246```

247 

248**En ligne dans `plugin.json`** :

249 

250```json theme={null}

251{

252 "name": "my-plugin",

253 "lspServers": {

254 "go": {

255 "command": "gopls",

256 "args": ["serve"],

257 "extensionToLanguage": {

258 ".go": "go"

259 }

260 }

261 }

262}

263```

264 

265**Champs obligatoires :**

266 

267| Field | Description |

268| :-------------------- | :---------------------------------------------------------- |

269| `command` | Le binaire LSP à exécuter (doit être dans PATH) |

270| `extensionToLanguage` | Mappe les extensions de fichier aux identifiants de langage |

271 

272**Champs optionnels :**

273 

274| Field | Description |

275| :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

276| `args` | Arguments de ligne de commande pour le serveur LSP |

277| `transport` | Transport de communication : `stdio` (par défaut) ou `socket`. Claude Code accepte `socket` mais exécute chaque serveur sur stdio, donc les règles du protocole stdout s'appliquent à tous les serveurs |

278| `env` | Variables d'environnement à définir au démarrage du serveur |

279| `initializationOptions` | Options passées au serveur lors de l'initialisation |

280| `settings` | Paramètres passés via `workspace/didChangeConfiguration` |

281| `workspaceFolder` | Chemin du dossier d'espace de travail pour le serveur |

282| `startupTimeout` | Temps maximum d'attente du démarrage du serveur (millisecondes) |

283| `shutdownTimeout` | Temps maximum d'attente de l'arrêt gracieux (millisecondes). Quand le délai d'attente s'écoule, Claude Code termine le processus du serveur. Quand non défini, aucun délai d'attente ne s'applique |

284| `restartOnCrash` | Si le serveur doit redémarrer après un crash. Par défaut `true`. Définissez à `false` pour laisser un serveur crashé arrêté au lieu de le redémarrer |

285| `maxRestarts` | Nombre maximum de tentatives de redémarrage avant d'abandonner |

286| `diagnostics` | Si les diagnostics doivent être poussés dans le contexte de Claude après les éditions (par défaut `true`). Définissez à `false` pour garder la navigation de code mais supprimer l'injection automatique de diagnostics. |

287 

288`restartOnCrash` et `shutdownTimeout` nécessitent Claude Code v2.1.205 ou ultérieur. Avant v2.1.205, le schéma de configuration acceptait les deux options mais définir l'une d'elles causait à Claude Code de sauter ce serveur LSP entièrement au démarrage, avec la raison visible uniquement dans la sortie `claude --debug`.

289 

290**Plusieurs serveurs pour la même extension** : quand plus d'un serveur LSP activé déclare la même extension de fichier dans `extensionToLanguage`, que les serveurs proviennent d'un plugin ou de différents plugins, le premier serveur enregistré gère les fichiers avec cette extension et les autres ne démarrent jamais. L'interface `/plugin` affiche un avertissement nommant le plugin dont le serveur est actif.

291 

292**Serveurs qui échouent à initialiser** : Claude Code ignore un serveur dont la configuration est invalide, par exemple un manquant `command` ou `extensionToLanguage`, et les autres serveurs configurés démarrent toujours. Exécutez `claude --debug` pour voir pourquoi un serveur a été ignoré.

293 

294Un serveur ignoré ne réclame pas ses extensions de fichier, donc un autre serveur valide qui déclare la même extension, du même plugin ou d'un plugin différent, gère toujours ces fichiers.

295 

296**Envoyez la sortie de log à stderr, pas stdout** : Claude Code lit le stdout d'un serveur comme des messages de protocole uniquement, et accepte les en-têtes de message jusqu'à 64 KiB et un corps de message jusqu'à 32 MiB. Claude Code déconnecte un serveur qui dépasse l'une ou l'autre limite ou écrit une sortie non-protocole à stdout, et compte la déconnexion comme un crash pour `restartOnCrash` et `maxRestarts`. Quand vous exécutez avec `--debug`, Claude Code écrit une erreur nommant la cause au journal de débogage.

297 

298<Warning>

299 **Vous devez installer le binaire du serveur de langage séparément.** Les plugins LSP configurent comment Claude Code se connecte à un serveur de langage, mais ils n'incluent pas le serveur lui-même. Si vous voyez `Executable not found in $PATH` dans l'onglet Errors `/plugin`, installez le binaire requis pour votre langage.

300</Warning>

301 

302**Plugins LSP disponibles :**

303 

304| Plugin | Language server | Install command |

305| :------------------ | :------------------------- | :----------------------------------------------------------------------------------------------- |

306| `pyright-lsp` | Pyright (Python) | `pip install pyright` ou `npm install -g pyright` |

307| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |

308| `rust-analyzer-lsp` | rust-analyzer | [Voir l'installation de rust-analyzer](https://rust-analyzer.github.io/manual.html#installation) |

309 

310Installez d'abord le serveur de langage, puis installez le plugin depuis la marketplace.

311 

312<h3 id="monitors">

313 Monitors

314</h3>

315 

316Les plugins peuvent déclarer des moniteurs de fond que Claude Code démarre automatiquement quand le plugin est actif. Chaque moniteur exécute une commande shell pour la durée de vie de la session et livre chaque ligne stdout à Claude comme une notification, donc Claude peut réagir aux entrées de log, changements de statut, ou événements sondés sans être demandé de démarrer la montre lui-même.

317 

318Les moniteurs de plugin utilisent le même mécanisme que l'[outil Monitor](/docs/fr/tools-reference#monitor-tool) et partagent ses contraintes de disponibilité. Ils s'exécutent uniquement dans les sessions CLI interactives, s'exécutent non-sandboxés au même niveau de confiance que les [hooks](#hooks), et sont ignorés sur les hôtes où l'outil Monitor est indisponible.

319 

320**Emplacement** : `monitors/monitors.json` à la racine du plugin, ou en ligne dans `plugin.json`

321 

322**Format** : Tableau JSON d'entrées de moniteur

323 

324Le `monitors/monitors.json` suivant surveille un point de terminaison de statut de déploiement et un journal d'erreurs local :

325 

326```json theme={null}

327[

328 {

329 "name": "deploy-status",

330 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/poll-deploy.sh",

331 "description": "Deployment status changes"

332 },

333 {

334 "name": "error-log",

335 "command": "tail -F ./logs/error.log",

336 "description": "Application error log",

337 "when": "on-skill-invoke:debug"

338 }

339]

340```

341 

342Pour déclarer les moniteurs en ligne, définissez `experimental.monitors` dans `plugin.json` au même tableau. Pour charger depuis un chemin non-par défaut, définissez `experimental.monitors` à une chaîne de chemin relatif telle que `"./config/monitors.json"`. Les moniteurs sont un [composant expérimental](#experimental-components).

343 

344**Champs obligatoires :**

345 

346| Field | Description |

347| :------------ | :---------------------------------------------------------------------------------------------------------------------------------- |

348| `name` | Identifiant unique au sein du plugin. Empêche les processus dupliqués quand le plugin se recharge ou un skill est invoqué à nouveau |

349| `command` | Commande shell exécutée comme un processus de fond persistant dans le répertoire de travail de la session |

350| `description` | Résumé court de ce qui est surveillé. Affiché dans le panneau de tâches et dans les résumés de notification |

351 

352**Champs optionnels :**

353 

354| Field | Description |

355| :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

356| `when` | Contrôle quand le moniteur démarre. `"always"` le démarre au démarrage de la session et au rechargement du plugin, et est la valeur par défaut. `"on-skill-invoke:<skill-name>"` le démarre la première fois que le skill nommé dans ce plugin est dispatché |

357 

358La valeur `command` supporte les [substitutions de chemin](#environment-variables) `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}` et `${CLAUDE_PROJECT_DIR}`, plus n'importe quel `${ENV_VAR}` de l'environnement. Préfixez la commande avec `cd "${CLAUDE_PLUGIN_ROOT}" && ` si le script doit s'exécuter depuis le répertoire du plugin lui-même.

359 

360Une `command` de moniteur ne peut pas référencer les valeurs [`${user_config.*}`](#user-configuration). La commande s'exécute via un shell, donc Claude Code rejette le moniteur avec une [erreur](/docs/fr/errors#plugin-command-references-user-config) au lieu de substituer la valeur. Les processus de moniteur ne reçoivent pas les variables d'environnement `CLAUDE_PLUGIN_OPTION_<KEY>`, donc faites en sorte que le script de moniteur lise la valeur depuis un fichier de configuration qu'il possède.

361 

362Si vous désactivez un plugin en milieu de session, Claude Code n'arrête pas les moniteurs qui sont déjà en cours d'exécution ; ils s'arrêtent quand la session se termine.

363 

364<h3 id="themes">

365 Themes

366</h3>

367 

368Les plugins peuvent fournir des thèmes de couleur qui apparaissent dans `/theme` aux côtés des présets intégrés et des thèmes locaux de l'utilisateur. Un thème est un fichier JSON dans `themes/` avec un préset `base` et une carte `overrides` clairsemée de jetons de couleur. Les thèmes sont un [composant expérimental](#experimental-components).

369 

370```json theme={null}

371{

372 "name": "Dracula",

373 "base": "dark",

374 "overrides": {

375 "claude": "#bd93f9",

376 "error": "#ff5555",

377 "success": "#50fa7b"

378 }

379}

380```

381 

382Quand un utilisateur sélectionne un thème de plugin, Claude Code enregistre `custom:<plugin-name>:<slug>` dans sa configuration. Les thèmes de plugin sont en lecture seule : quand un utilisateur appuie sur `Ctrl+E` sur l'un d'eux dans `/theme`, Claude Code le copie dans `~/.claude/themes/` pour qu'ils puissent éditer la copie.

383 

384***

385 

386<h2 id="plugin-installation-scopes">

387 Portées d'installation des plugins

388</h2>

389 

390Lorsque vous installez un plugin, vous choisissez une **portée** qui détermine où le plugin est disponible et qui d'autre peut l'utiliser :

391 

392| Portée | Fichier de paramètres | Cas d'usage |

393| :-------- | :--------------------------------------- | :----------------------------------------------------------------------------------------- |

394| `user` | `~/.claude/settings.json` | Plugins personnels disponibles dans tous les projets (par défaut) |

395| `project` | `.claude/settings.json` | Plugins d'équipe partagés via le contrôle de version |

396| `local` | `.claude/settings.local.json` | Plugins spécifiques au projet, ignorés par git lorsque Claude Code enregistre un paramètre |

397| `managed` | [Paramètres gérés](/docs/fr/managed-settings) | Plugins gérés (lecture seule, mise à jour uniquement) |

398 

399Les plugins utilisent le même système de portée que les autres configurations de Claude Code. Pour les instructions d'installation et les drapeaux de portée, consultez [Installer des plugins](/docs/fr/discover-plugins#install-plugins). Pour une explication complète des portées, consultez [Portées de configuration](/docs/fr/settings#where-settings-live).

400 

401***

402 

403<h2 id="skills-directory-plugins">

404 Plugins du répertoire de compétences

405</h2>

406 

407Tout dossier situé sous un répertoire de compétences qui contient un manifeste `.claude-plugin/plugin.json` est chargé en tant que plugin nommé `<name>@skills-dir` lors de la session suivante, sans marketplace et sans étape d'installation. Générez-en un avec [`plugin init`](#plugin-init). Contrairement à une installation marketplace copiée, le plugin est découvert sur place plutôt que copié dans le cache des plugins.

408 

409Un arborescence de répertoire de compétences prend en charge trois choses distinctes :

410 

411| Ce que vous avez | Ce que c'est |

412| :-------------------------------------------- | :------------------------------------------------------------------------------------------------- |

413| `<skills-dir>/foo/SKILL.md` sans manifeste | Une simple [compétence](/docs/fr/skills) nommée `foo` |

414| `<skills-dir>/foo/.claude-plugin/plugin.json` | Un plugin `foo@skills-dir`, qui peut regrouper ses propres compétences, agents, hooks et bien plus |

415| `<plugin>/skills/bar/SKILL.md` | Une compétence `bar` empaquetée à l'intérieur d'un plugin |

416 

417<h3 id="choose-where-the-plugin-loads-from">

418 Choisir d'où le plugin se charge

419</h3>

420 

421| Répertoire de compétences | Portée | Charge |

422| :------------------------ | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

423| `~/.claude/skills/` | personnel | Dans chaque projet, puisque l'emplacement vous appartient uniquement |

424| `<cwd>/.claude/skills/` | projet | Uniquement après que vous acceptiez la [boîte de dialogue de confiance](/docs/fr/permissions#what-runs-before-you-trust-a-folder) de l'espace de travail pour ce dossier |

425 

426Un plugin de portée projet est archivé dans le référentiel et atteint chaque collaborateur qui le clone. Parce que ce contenu provient du référentiel plutôt que de vous, il se charge uniquement après la même barrière de confiance qui régit les règles d'autorisation du projet dans `.claude/settings.json`, donc faire confiance à un dossier parent ou exécuter avec `-p` ne suffit pas, et les composants qui exécutent du code sont davantage restreints :

427 

428* Les serveurs MCP qu'il déclare passent par la [même approbation par serveur](/docs/fr/mcp) qu'un `.mcp.json` de projet

429* Les serveurs LSP ne démarrent qu'après que vous fassiez confiance à l'espace de travail

430* Les [moniteurs en arrière-plan](#monitors) ne se chargent pas

431 

432Les plugins de portée personnelle n'ont aucune de ces restrictions.

433 

434<Warning>

435 Les plugins `@skills-dir` de portée projet se chargent uniquement à partir du `.claude/skills/` du [répertoire de travail principal](/docs/fr/permissions#working-directories) de la session. Ils ne [remontent pas jusqu'à la racine du référentiel](/docs/fr/skills#discovery-from-parent-and-nested-directories) comme le font les compétences et commandes simples, donc lancer depuis un sous-répertoire manque un plugin qui se trouve à la racine du référentiel. Lancez depuis la racine du référentiel, ou [déplacez la session là-bas avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur.

436</Warning>

437 

438<h3 id="edit-reload-and-disable-a-skills-directory-plugin">

439 Modifier, recharger et désactiver un plugin du répertoire de compétences

440</h3>

441 

442Les modifications que vous apportez au `SKILL.md` d'une compétence prennent effet immédiatement dans la session actuelle. Les modifications apportées aux autres composants du plugin, tels que `hooks/`, `.mcp.json`, `agents/` et `output-styles/`, ne le font pas. Exécutez `/reload-plugins` ou redémarrez Claude Code pour les récupérer. Voir [Détection des changements en direct](/docs/fr/skills#live-change-detection).

443 

444Pour arrêter le chargement d'un plugin du répertoire de compétences, supprimez son dossier ou désactivez-le par nom. Il n'y a pas d'étape `uninstall` car rien n'a été installé à partir d'une marketplace.

445 

446```bash theme={null}

447claude plugin disable my-tool@skills-dir

448```

449 

450***

451 

452<h2 id="synced-plugins">

453 Plugins synchronisés depuis claude.ai

454</h2>

455 

456Claude Code charge les plugins activés pour votre compte claude.ai, y compris les plugins que votre organisation active pour ses membres, aux côtés des plugins que vous installez à partir des marketplaces. Il télécharge chacun d'eux dans `~/.claude/plugins/synced/` et le charge en tant que `<name>@synced`, sans marketplace et sans enregistrement d'installation. Un plugin synchronisé s'exécute avec la même confiance qu'un plugin marketplace que vous avez installé : ses skills, agents, hooks, serveurs MCP et serveurs LSP se chargent tous.

457 

458L'endroit où Claude Code synchronise ces plugins dépend de la session :

459 

460* Dans [Cowork](https://claude.com/product/cowork) et les [sessions cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup), Claude Code les télécharge dans l'environnement propre de la session au démarrage de la session. Avant la v2.1.239, Claude Code chargeait ces plugins en tant que `<name>@inline`, l'identité que les plugins `--plugin-dir` utilisent.

461* Dans les sessions de terminal où vous vous connectez avec votre compte claude.ai, Claude Code vérifie votre compte une fois à chaque démarrage, puis télécharge les nouveaux plugins et les plugins mis à jour et supprime ceux que vous ou votre organisation avez désactivés, le tout en arrière-plan. La synchronisation dans les sessions de terminal nécessite Claude Code v2.1.273 ou version ultérieure.

462 

463La vérification au lancement s'exécute en arrière-plan, elle peut donc se terminer après le démarrage de votre session. Lorsqu'elle ajoute, met à jour ou supprime un plugin synchronisé dans une session interactive, Claude Code affiche `Plugins changed. Run /reload-plugins to activate.` Exécutez [`/reload-plugins`](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) pour charger la modification dans cette session, ou laissez-la pour la prochaine fois que vous démarrez Claude Code. Si vous activez un plugin sur claude.ai pendant qu'une session est en cours d'exécution, Claude Code le télécharge la prochaine fois qu'il démarre.

464 

465La synchronisation des plugins dans les sessions de terminal s'exécute dans les mêmes conditions de connexion que les [skills synchronisés depuis claude.ai](/docs/fr/skills#where-synced-skills-load). Elle nécessite également une connexion qui accorde à Claude Code l'accès aux plugins de votre compte.

466 

467Une connexion à partir d'une version antérieure de Claude Code récupère l'accès aux plugins la prochaine fois que Claude Code renouvelle cette connexion en arrière-plan, dans quelques heures, ou immédiatement si vous exécutez `/login` à nouveau. La synchronisation des plugins commence la prochaine fois que vous démarrez Claude Code après cela.

468 

469`claude plugin list` affiche les plugins synchronisés sous un en-tête `Synced from claude.ai`, et l'onglet **Installed** de `/plugin` les répertorie avec `synced` comme source. Gérez un plugin synchronisé par l'ID `<name>@synced` que `claude plugin list` affiche :

470 

471* **Désactiver un plugin** : exécutez `claude plugin disable <name>@synced`, ou désactivez-le à partir de l'onglet **Installed** de `/plugin`. Claude Code enregistre le choix en tant que `"<name>@synced": false` dans votre [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins) au niveau utilisateur. Pour réactiver le plugin, exécutez `claude plugin enable <name>@synced`.

472* **Exclure un plugin partout** : [désactivez le plugin pour votre compte claude.ai](/docs/fr/desktop#extend-claude-code). Pour l'exclure d'un projet dans chaque environnement, définissez `"<name>@synced": false` sous `enabledPlugins` dans le `.claude/settings.json` engagé de ce projet.

473* **Gérer le plugin lui-même sur claude.ai** : `claude plugin install`, `update` et `uninstall` ne s'appliquent pas à un plugin synchronisé. Claude Code télécharge les mises à jour d'un plugin à la prochaine synchronisation. Pour en supprimer un, désactivez le plugin pour votre compte claude.ai, et Claude Code le supprime à la prochaine synchronisation.

474* **Arrêter la synchronisation sur une machine** : définissez [`syncClaudeAiPlugins`](/docs/fr/settings-reference#syncclaudeaiplugins) sur `false` dans vos paramètres utilisateur. Claude Code arrête le téléchargement, et la prochaine fois qu'il démarre, il déplace les plugins qu'il a déjà synchronisés vers `~/.claude/plugins/.trash/` et ne les charge plus. Votre organisation peut définir la même clé dans les [paramètres gérés](/docs/fr/managed-settings), ou désactiver les Skills sur claude.ai, ce qui arrête également la synchronisation des plugins.

475 

476Vous ne pouvez pas désactiver un plugin que votre organisation marque comme requis sur claude.ai. Claude Code le charge même si vous l'avez désactivé précédemment, et `claude plugin disable` refuse avec `Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.` Dans `claude plugin list`, ces plugins sont marqués `required by your org`.

477 

478Lorsqu'un plugin activé provenant de toute autre source correspond au nom d'un plugin synchronisé, Claude Code charge ce plugin et signale que la copie synchronisée n'est pas chargée. Les autres sources incluent les installations marketplace, les [plugins du répertoire de skills](#skills-directory-plugins), les plugins `--plugin-dir` et les plugins intégrés à Claude Code. Pour utiliser la copie claude.ai à la place, désactivez votre propre copie. Avant la v2.1.239, Claude Code chargeait la copie synchronisée à la place d'une installation marketplace portant le même nom.

479 

480***

481 

482<h2 id="plugin-manifest-schema">

483 Schéma du manifeste du plugin

484</h2>

485 

486Le fichier `.claude-plugin/plugin.json` définit les métadonnées et la configuration de votre plugin.

487 

488Le manifeste est facultatif. S'il est omis, Claude Code découvre automatiquement les composants dans les [emplacements par défaut](#file-locations-reference) et dérive le nom du plugin du nom du répertoire. Utilisez un manifeste lorsque vous devez fournir des métadonnées ou des chemins de composants personnalisés.

489 

490<h3 id="complete-schema">

491 Schéma complet

492</h3>

493 

494```json theme={null}

495{

496 "name": "plugin-name",

497 "displayName": "Plugin Name",

498 "version": "1.2.0",

499 "description": "Brief plugin description",

500 "author": {

501 "name": "Author Name",

502 "email": "author@example.com",

503 "url": "https://github.com/author"

504 },

505 "homepage": "https://docs.example.com/plugin",

506 "repository": "https://github.com/author/plugin",

507 "license": "MIT",

508 "keywords": ["keyword1", "keyword2"],

509 "metadata": { "catalogId": "cat-123", "tier": "pro" },

510 "skills": "./custom/skills/",

511 "commands": ["./custom/commands/special.md"],

512 "agents": ["./custom/agents/reviewer.md"],

513 "hooks": "./config/hooks.json",

514 "mcpServers": "./mcp-config.json",

515 "outputStyles": "./styles/",

516 "lspServers": "./.lsp.json",

517 "experimental": {

518 "themes": "./themes/",

519 "monitors": "./monitors.json",

520 "evals": "quality/evals"

521 },

522 "dependencies": [

523 "helper-lib",

524 { "name": "secrets-vault", "version": "~2.1.0" }

525 ]

526}

527```

528 

529<h3 id="required-fields">

530 Champs obligatoires

531</h3>

532 

533Si vous incluez un manifeste, `name` est le seul champ obligatoire.

534 

535| Champ | Type | Description | Exemple |

536| :----- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

537| `name` | string | Identifiant unique en kebab-case, sans espaces, caractères de contrôle ou caractères de formatage bidirectionnel. Lorsqu'une [entrée de marketplace](/docs/fr/plugin-marketplaces#plugin-entries) répertorie le plugin sous un nom différent, le nom de l'entrée marketplace est celui utilisé par les clés `enabledPlugins` et `/plugin` | `"deployment-tools"` |

538 

539Ce nom est utilisé pour l'espace de noms des composants. Par exemple, dans l'interface utilisateur, l'agent `agent-creator` pour le plugin nommé `plugin-dev` apparaîtra comme `plugin-dev:agent-creator`.

540 

541<h3 id="unrecognized-fields">

542 Champs non reconnus

543</h3>

544 

545Claude Code ignore les champs de niveau supérieur qu'il ne reconnaît pas. Vous pouvez conserver les métadonnées d'un autre écosystème dans `plugin.json` et le plugin se charge toujours. Cela rend pratique de maintenir un seul manifeste qui sert également de manifeste d'extension VS Code ou Cursor, d'un `package.json` npm, ou d'un manifeste de bundle MCPB/DXT.

546 

547`claude plugin validate` signale les champs non reconnus comme des avertissements, pas des erreurs. Si un champ est décalé d'un ou deux caractères par rapport à un champ reconnu, l'avertissement suggère le nom probablement prévu. Un plugin avec uniquement des avertissements de champs non reconnus réussit toujours la validation et se charge au moment de l'exécution.

548 

549La façon dont Claude Code gère un champ reconnu dont la valeur a le mauvais type dépend du champ :

550 

551* **La plupart des champs** : le plugin ne se charge pas. Par exemple, une valeur `keywords` qui est une chaîne au lieu d'un tableau est une erreur de chargement, et `claude plugin validate` la signale comme telle.

552* **`experimental` et `metadata`** : Claude Code ignore une valeur non-objet, et `claude plugin validate` signale un avertissement.

553 

554Passez `--strict` pour traiter les avertissements comme des erreurs. Utilisez-le dans CI pour détecter un nom de champ mal orthographié ou un champ laissé par l'outil de manifeste d'un autre avant la publication, même si le plugin se chargerait au moment de l'exécution.

555 

556```bash theme={null}

557claude plugin validate ./my-plugin --strict

558```

559 

560<h3 id="metadata-fields">

561 Champs de métadonnées

562</h3>

563 

564| Champ | Type | Description | Exemple |

565| :--------------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

566| `$schema` | string | URL du schéma JSON pour l'autocomplétion et la validation de l'éditeur. Claude Code ignore ce champ au moment du chargement. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

567| `displayName` | string | Nom lisible par l'homme affiché dans le sélecteur `/plugin` et autres surfaces d'interface utilisateur. Pour un plugin installé depuis le marketplace, un `displayName` sur l'[entrée marketplace](/docs/fr/plugin-marketplaces#optional-plugin-fields) a la priorité sur cette valeur. Lorsqu'aucun nom d'affichage n'est défini dans l'un ou l'autre endroit, les utilisateurs voient `name`. Contrairement à `name`, peut contenir des espaces et n'importe quelle casse. Non utilisé pour l'espace de noms ou la recherche. | `"Deployment Tools"` |

568| `version` | string | Optionnel. Version sémantique. La définition de ceci épingle le plugin à cette chaîne de version, de sorte que les utilisateurs ne reçoivent des mises à jour que lorsque vous la modifiez, sauf pour une [`command` source](/docs/fr/plugin-marketplaces#command-sources) ou un plugin [chargé en place](#plugin-caching-and-file-resolution) ; voir [Gestion des versions](#version-management). S'il est également défini dans l'entrée marketplace, `plugin.json` gagne. S'il est omis, la version provient de la source suivante dans [Gestion des versions](#version-management). | `"2.1.0"` |

569| `description` | string | Brève explication de l'objectif du plugin | `"Deployment automation tools"` |

570| `author` | object | Informations sur l'auteur | `{"name": "Dev Team", "email": "dev@company.com"}` |

571| `homepage` | string | URL de la documentation | `"https://docs.example.com"` |

572| `repository` | string | URL du code source | `"https://github.com/user/plugin"` |

573| `license` | string | Identifiant de licence | `"MIT"`, `"Apache-2.0"` |

574| `keywords` | array | Balises de découverte | `["deployment", "ci-cd"]` |

575| `metadata` | object | Objet de forme libre pour vos propres données, telles que les champs d'habilitation ou de catalogue. Claude Code ne le lit pas, donc les valeurs n'affectent jamais le comportement du plugin. Claude Code ignore une valeur non-objet, et `claude plugin validate` la signale comme un avertissement. Avant v2.1.222, Claude Code traitait la clé comme un [champ non reconnu](#unrecognized-fields). | `{"catalogId": "cat-123"}` |

576| `defaultEnabled` | boolean | Si le plugin démarre dans un état activé lorsque l'utilisateur n'en a pas défini un. Par défaut `true`. Voir [Activation par défaut](#default-enablement). | `false` |

577 

578<h3 id="default-enablement">

579 Activation par défaut

580</h3>

581 

582Définissez `defaultEnabled: false` dans `plugin.json` pour livrer un plugin qui s'installe désactivé. L'utilisateur l'active avec `claude plugin enable <plugin>` ou l'interface `/plugin`. Utilisez ceci pour les plugins qui ajoutent un coût ou une portée auquel un utilisateur devrait s'inscrire, comme celui qui se connecte à un service externe.

583 

584`defaultEnabled` est le fallback lorsque rien d'autre n'a décidé l'état du plugin. Le paramètre de l'utilisateur et une exigence de dépendance ont la priorité sur celui-ci :

585 

586* **Le paramètre de l'utilisateur** : une entrée pour le plugin dans `enabledPlugins` à n'importe quelle portée de paramètres. Une fois écrit, il persiste à travers les mises à jour et réinstallations de plugins, donc changer `defaultEnabled` dans une version ultérieure ne bascule pas un utilisateur existant.

587* **Une exigence de dépendance** : lorsqu'un plugin est requis par un autre qui est actif, Claude Code écrit `true` pour lui au moment de l'installation ou de l'activation. Cela lui donne un paramètre explicite, donc sa propre valeur par défaut ne s'applique plus. Voir [Activer ou désactiver un plugin avec des dépendances](/docs/fr/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies).

588 

589Le même champ peut apparaître dans l'entrée marketplace d'un plugin, où il a la priorité sur la valeur dans `plugin.json`. Voir [Champs de plugin optionnels](/docs/fr/plugin-marketplaces#optional-plugin-fields).

590 

591<h3 id="component-path-fields">

592 Champs de chemin de composant

593</h3>

594 

595| Champ | Type | Description | Exemple |

596| :---------------------- | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

597| `skills` | string\|array | Répertoires de compétences personnalisés contenant `<name>/SKILL.md`. S'ajoute à l'analyse par défaut `skills/`. Voir [Règles de comportement des chemins](#path-behavior-rules) pour l'exception de racine marketplace | `"./custom/skills/"` |

598| `commands` | string\|array | Fichiers de compétences `.md` plats personnalisés ou répertoires (remplace `commands/` par défaut) | `"./custom/cmd.md"` ou `["./cmd1.md"]` |

599| `agents` | string\|array | Fichiers d'agent personnalisés (remplace `agents/` par défaut) | `"./custom/agents/reviewer.md"` |

600| `workflows` | string\|array | Fichiers ou répertoires de scripts [workflow](/docs/fr/workflows) personnalisés (remplace `workflows/` par défaut) | `"./custom/workflows/"` |

601| `hooks` | string\|array\|object | Chemins de configuration de hook ou configuration en ligne | `"./my-extra-hooks.json"` |

602| `mcpServers` | string\|array\|object | Chemins de configuration MCP ou configuration en ligne | `"./my-extra-mcp-config.json"` |

603| `outputStyles` | string\|array | Fichiers/répertoires de style de sortie personnalisés (remplace `output-styles/` par défaut) | `"./styles/"` |

604| `lspServers` | string\|array\|object | Configurations [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) pour l'intelligence du code (aller à la définition, trouver les références, etc.) | `"./.lsp.json"` |

605| `experimental.themes` | string\|array | Fichiers/répertoires de thème de couleur (remplace `themes/` par défaut). Voir [Thèmes](#themes) | `"./themes/"` |

606| `experimental.monitors` | string\|array | Configurations [Monitor](/docs/fr/tools-reference#monitor-tool) de fond qui démarrent automatiquement lorsque le plugin est actif. Voir [Moniteurs](#monitors) | `"./monitors.json"` |

607| `experimental.evals` | string\|array | Répertoire sous la racine du plugin qui contient les [cas d'évaluation](/docs/fr/plugin-evals#use-a-different-eval-directory) du plugin, lorsqu'il n'est pas le répertoire par défaut `evals/`. `claude plugin eval --eval-dir` le remplace | `"quality/evals"` |

608| `userConfig` | object | Valeurs configurables par l'utilisateur demandées au moment de l'activation. Voir [Configuration utilisateur](#user-configuration) | |

609| `channels` | array | Déclarations de canal pour l'injection de messages (style Telegram, Slack, Discord). Voir [Canaux](#channels) | |

610| `dependencies` | array | Autres plugins que ce plugin nécessite, optionnellement avec des contraintes de version semver. Voir [Contraindre les versions de dépendance du plugin](/docs/fr/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

611 

612<h3 id="experimental-components">

613 Composants expérimentaux

614</h3>

615 

616Les composants sous la clé `experimental`, `themes` et `monitors`, ont un schéma de manifeste qui peut changer entre les versions pendant qu'ils se stabilisent. L'endroit où vous les déclarez est une migration séparée : le niveau supérieur fonctionne toujours, `claude plugin validate` avertit, et une version future exigera `experimental.*`.

617 

618<h3 id="user-configuration">

619 Configuration utilisateur

620</h3>

621 

622Le champ `userConfig` déclare les valeurs pour lesquelles Claude Code invite l'utilisateur lorsque le plugin est activé. Utilisez ceci au lieu d'exiger que les utilisateurs modifient manuellement `settings.json`.

623 

624```json theme={null}

625{

626 "userConfig": {

627 "api_endpoint": {

628 "type": "string",

629 "title": "API endpoint",

630 "description": "Your team's API endpoint"

631 },

632 "api_token": {

633 "type": "string",

634 "title": "API token",

635 "description": "API authentication token",

636 "sensitive": true

637 }

638 }

639}

640```

641 

642Les clés doivent être des identifiants valides. Chaque option supporte ces champs :

643 

644| Champ | Obligatoire | Description |

645| :------------ | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

646| `type` | Oui | L'un de `string`, `number`, `boolean`, `directory`, ou `file` |

647| `title` | Oui | Étiquette affichée dans la boîte de dialogue de configuration |

648| `description` | Oui | Texte d'aide affiché sous le champ |

649| `sensitive` | Non | Si `true`, masque l'entrée et stocke la valeur dans le stockage sécurisé au lieu de `settings.json` |

650| `required` | Non | Si `true`, la validation échoue lorsque le champ est vide |

651| `default` | Non | Valeur utilisée lorsque l'utilisateur ne fournit rien |

652| `options` | Non | Pour le type `string`, les valeurs que le champ accepte, affichées dans `/config` comme un sélecteur sur celles-ci. Voir [Limiter un champ à des options fixes](#limit-a-field-to-fixed-options). Nécessite Claude Code v2.1.271 ou ultérieur |

653| `multiple` | Non | Pour le type `string`, autoriser un tableau de chaînes |

654| `min` / `max` | Non | Limites pour le type `number` |

655 

656À l'exception des champs `sensitive` et des listes `multiple`, chaque champ de chaque plugin activé apparaît également comme une ligne dans le panneau `/config`. Les lignes nécessitent Claude Code v2.1.269 ou ultérieur.

657 

658Chaque valeur est disponible pour la substitution comme `${user_config.KEY}` dans les configurations de serveur MCP et LSP et les commandes de hook. Les valeurs non sensibles peuvent également être substituées dans le contenu des compétences et des agents. Toutes les valeurs sont exportées vers les processus de hook en tant que variables d'environnement `CLAUDE_PLUGIN_OPTION_<KEY>`, où `<KEY>` est la clé d'option en majuscules.

659 

660Les champs qui s'exécutent dans un shell rejettent `${user_config.*}` : substituer une valeur configurée dans une commande shell permettrait au shell d'exécuter tout ce que cette valeur contient, donc le composant échoue avec une [erreur](/docs/fr/errors#plugin-command-references-user-config) à la place. Chaque champ rejeté a une autre façon de passer la valeur :

661 

662| Champ rejeté | Comment passer la valeur |

663| :--------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- |

664| Commandes de hook en forme shell | Utilisez la [forme exec](/docs/fr/hooks#exec-form-and-shell-form) avec `args`, ou lisez `CLAUDE_PLUGIN_OPTION_<KEY>` à partir de l'environnement du hook |

665| Commandes [Monitor](#monitors) | Lisez la valeur à partir d'un fichier de configuration dans le script |

666| MCP [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication) | Lisez la valeur à partir d'un fichier de configuration dans le script |

667 

668Avant v2.1.207, ces champs substituaient les valeurs `${user_config.KEY}` ; mettez à jour les plugins qui en dépendaient.

669 

670Les valeurs non sensibles sont stockées sous la clé [`pluginConfigs`](/docs/fr/settings-reference#pluginconfigs) dans votre `settings.json` utilisateur comme `pluginConfigs[<plugin-id>].options`.

671 

672Sur macOS, Claude Code stocke les valeurs sensibles dans le Keychain macOS, en revenant à `~/.claude/.credentials.json` lorsque le Keychain rejette l'écriture. Sur les plates-formes sans un trousseau supporté, il les stocke dans `~/.claude/.credentials.json`. Le stockage du trousseau est partagé avec les jetons OAuth et a une limite totale d'environ 2 KB, donc gardez les valeurs sensibles petites.

673 

674Claude Code lit toutes les valeurs `pluginConfigs` à partir de seulement trois sources de paramètres :

675 

676* **Paramètres utilisateur** : `~/.claude/settings.json`, le fichier que l'invite au moment de l'activation écrit

677* **`--settings`** : l'indicateur CLI ou les paramètres en ligne du SDK

678* **Paramètres gérés** : [politique contrôlée par l'organisation](/docs/fr/permissions#managed-settings)

679 

680Lorsque plusieurs sources définissent la même clé, les paramètres gérés ont la priorité, puis `--settings`, puis les paramètres utilisateur. La seule source que vous pouvez supprimer de cette liste est les paramètres utilisateur : passez [`--setting-sources`](/docs/fr/cli-reference#cli-flags) sans `user` et Claude Code les ignore. Les paramètres gérés et `--settings` restent quels que soient les paramètres que vous passez. L'option [`settingSources`](/docs/fr/agent-sdk/claude-code-features#what-settingsources-does-not-control) du SDK définit la même liste.

681 

682Les entrées dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet sont ignorées. Les deux fichiers vivent dans l'espace de travail, donc un référentiel cloné pourrait fournir des valeurs là, et ces valeurs s'écouleraient dans les commandes de hook de plugin, les configurations de serveur MCP, les commandes LSP et les commandes de moniteur. Avant v2.1.207, ces entrées étaient lues. La restriction est spécifique à `pluginConfigs` : [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins) honore toujours les paramètres de projet et locaux.

683 

684<h4 id="limit-a-field-to-fixed-options">

685 Limiter un champ à des options fixes

686</h4>

687 

688Définissez `options` sur un champ `userConfig` pour que les utilisateurs choisissent sa valeur dans une liste fixe.

689 

690Pour limiter un champ `tone` à trois options, listez-les dans `options` et définissez `default` sur l'une d'elles :

691 

692```json theme={null}

693{

694 "userConfig": {

695 "tone": {

696 "type": "string",

697 "title": "Tone",

698 "description": "Voice for generated replies",

699 "options": ["neutral", "warm", "formal"],

700 "default": "neutral"

701 }

702 }

703}

704```

705 

706Si vous déclarez `options` sur n'importe quel champ, les utilisateurs sur les versions de Claude Code antérieures à v2.1.271 ne peuvent pas charger le plugin.

707 

708Lorsque vous définissez `options` sur un champ, suivez ces règles :

709 

710* Définissez `type` sur `string`

711* Ne définissez pas `multiple` ou `sensitive` sur `true`

712* Définissez `default` sur l'une des options

713* Si vous laissez `default` non défini, définissez `required` sur `true`

714* Listez au moins une option, chacune de 1 à 64 caractères de long

715* Ne commencez pas ou ne terminez pas une option par un espace

716* N'utilisez pas de caractères de contrôle, de caractères invisibles, de caractères qui changent la direction du texte, ou d'espaces autres qu'un espace régulier dans une option

717* Ne listez pas la même option deux fois, même dans une casse de lettre différente

718 

719Si vous enfreignez l'une de ces règles, le plugin ne se charge pas. Exécutez `claude plugin validate` pour voir quel champ enfreint quelle règle.

720 

721<h3 id="channels">

722 Canaux

723</h3>

724 

725Le champ `channels` permet à un plugin de déclarer un ou plusieurs canaux de message qui injectent du contenu dans la conversation. Chaque canal se lie à un serveur MCP que le plugin fournit.

726 

727```json theme={null}

728{

729 "channels": [

730 {

731 "server": "telegram",

732 "userConfig": {

733 "bot_token": {

734 "type": "string",

735 "title": "Bot token",

736 "description": "Telegram bot token",

737 "sensitive": true

738 },

739 "owner_id": {

740 "type": "string",

741 "title": "Owner ID",

742 "description": "Your Telegram user ID"

743 }

744 }

745 }

746 ]

747}

748```

749 

750Le champ `server` est obligatoire et doit correspondre à une clé dans les `mcpServers` du plugin. Le `userConfig` optionnel par canal utilise le même schéma que le champ de niveau supérieur, permettant au plugin de demander des jetons de bot ou des ID de propriétaire lorsque le plugin est activé.

751 

752<h3 id="path-behavior-rules">

753 Règles de comportement des chemins

754</h3>

755 

756Si un chemin personnalisé remplace ou étend le répertoire par défaut du plugin dépend du champ :

757 

758* **Remplace le défaut** : `commands`, `agents`, `workflows`, `outputStyles`, `experimental.themes`, `experimental.monitors`. Par exemple, lorsque le manifeste spécifie `commands`, le répertoire par défaut `commands/` n'est pas analysé. Pour conserver le défaut et en ajouter plus, listez-le explicitement : `"commands": ["./commands/", "./extras/"]`

759* **S'ajoute au défaut** : `skills`. Le répertoire par défaut `skills/` est toujours analysé, et les répertoires listés dans `skills` sont chargés à côté de lui. Exception : pour une [entrée marketplace dont la `source` se résout à la racine marketplace](/docs/fr/plugin-marketplaces#advanced-plugin-entries), déclarer des sous-répertoires spécifiques remplace l'analyse par défaut `skills/`

760* **Règles de fusion propres** : [hooks](#hooks), [serveurs MCP](#mcp-servers), et [serveurs LSP](#lsp-servers). Voir chaque section pour savoir comment plusieurs sources se combinent

761 

762Lorsqu'un plugin a à la fois un dossier par défaut et la clé de manifeste correspondante, Claude Code avertit du dossier ignoré dans `claude plugin list` et la vue de détail `/plugin`. Le plugin se charge toujours en utilisant les chemins du manifeste. Claude Code n'avertit pas lorsque la clé de manifeste pointe dans le dossier par défaut, par exemple `"commands": ["./commands/deploy.md"]`, car ce chemin nomme le dossier explicitement.

763 

764Pour tous les champs de chemin :

765 

766* Tous les chemins doivent être relatifs à la racine du plugin et commencer par `./`, sauf que le champ `skills` accepte également `"."`

767 * À la fois `"."` et `"./"` désignent la racine du plugin elle-même

768 * Avant v2.1.221, `"."` échouait la validation du manifeste et le plugin ne se chargeait pas, donc utilisez `"./"` pour supporter les versions antérieures

769* Les composants des chemins personnalisés utilisent les mêmes règles de nommage et d'espace de noms, sauf les fichiers d'agent. Voir [Agents](#agents) pour savoir comment fonctionnent les noms d'agent

770* Plusieurs chemins peuvent être spécifiés comme des tableaux

771* Un chemin de compétence peut pointer vers un répertoire qui contient directement un `SKILL.md`, par exemple `"skills": ["."]` pour la racine du plugin

772 * Claude Code prend le nom d'invocation de la compétence à partir du champ `name` du frontmatter dans `SKILL.md`, donc le nom reste stable quel que soit le nom du répertoire d'installation

773 * Si `name` n'est pas défini dans le frontmatter, Claude Code revient au nom de base du répertoire

774 

775Un plugin qui a un `SKILL.md` à sa racine, aucun sous-répertoire `skills/`, et aucun champ de manifeste `skills` est automatiquement chargé comme un plugin à compétence unique. Vous n'avez pas besoin de définir `"skills": ["./"]` dans `plugin.json` pour cette disposition.

776 

777**Exemples de chemins** :

778 

779```json theme={null}

780{

781 "commands": [

782 "./specialized/deploy.md",

783 "./utilities/batch-process.md"

784 ],

785 "agents": [

786 "./custom-agents/reviewer.md",

787 "./custom-agents/tester.md"

788 ]

789}

790```

791 

792<h3 id="environment-variables">

793 Variables d'environnement

794</h3>

795 

796Claude Code fournit trois variables pour référencer les chemins :

797 

798| Variable | Se résout à | Utilisez-la pour |

799| :---------------------- | :---------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- |

800| `${CLAUDE_PLUGIN_ROOT}` | Chemin absolu vers le répertoire d'installation du plugin | Scripts, binaires et fichiers de configuration fournis avec le plugin |

801| `${CLAUDE_PLUGIN_DATA}` | [Répertoire persistant](#persistent-data-directory) qui survit aux mises à jour du plugin, créé à la première référence | Dépendances installées telles que `node_modules` ou environnements virtuels Python, code généré et caches |

802| `${CLAUDE_PROJECT_DIR}` | La racine du projet | Scripts et fichiers de configuration locaux au projet |

803 

804Les trois sont exportés en tant que variables d'environnement vers les processus de hook et vers les sous-processus de serveur MCP et LSP. Ils ne sont pas présents dans l'environnement des commandes que Claude exécute via l'outil Bash, dans la session principale ou dans un sous-agent. Dans le contenu du plugin, écrivez l'espace réservé à la place, et Claude Code substitue le chemin en ligne lorsqu'il charge le contenu. Les champs qui les substituent en ligne dépendent du composant du plugin :

805 

806| Composant du plugin | Champs où les espaces réservés se résolvent |

807| :------------------------------------ | :------------------------------------------ |

808| Contenu des compétences et des agents | N'importe où l'espace réservé apparaît |

809| Commandes de hook et de moniteur | N'importe où l'espace réservé apparaît |

810| Serveurs MCP `stdio` | `command`, `args`, `env` |

811| Serveurs MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` |

812| Serveurs LSP | `command`, `args`, `env`, `workspaceFolder` |

813 

814Dans les commandes de hook, utilisez la [forme exec](/docs/fr/hooks#exec-form-and-shell-form) avec `args` afin que chaque chemin soit passé comme un argument sans guillemets. Dans les hooks en forme shell et les commandes de moniteur, enveloppez les variables entre guillemets doubles, comme dans `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`. Ce hook en forme shell exécute un script fourni avec un plugin :

815 

816```json theme={null}

817{

818 "hooks": {

819 "PostToolUse": [

820 {

821 "hooks": [

822 {

823 "type": "command",

824 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/process.sh"

825 }

826 ]

827 }

828 ]

829 }

830}

831```

832 

833Pour un plugin copié, `${CLAUDE_PLUGIN_ROOT}` change lorsque le plugin se met à jour. Le répertoire de la version précédente reste sur le disque pendant une période de grâce après une mise à jour, mais traitez-le comme éphémère et n'écrivez pas d'état là. Pour un plugin chargé en place à partir d'un marketplace de répertoire local, la variable pointe vers le répertoire source stable. Voir [mise en cache du plugin](#plugin-caching-and-file-resolution) pour savoir quels plugins sont copiés et pour la sémantique de nettoyage.

834 

835Lorsqu'un plugin copié se met à jour en milieu de session, les commandes de hook, les moniteurs, les serveurs MCP et les serveurs LSP continuent d'utiliser le chemin de la version précédente. Exécutez `/reload-plugins` pour basculer les hooks, les serveurs MCP et les serveurs LSP vers le nouveau chemin ; les moniteurs nécessitent un redémarrage de session. Dans une session sans terminal interactif, le rechargement laisse les serveurs MCP du plugin sur l'ancien chemin jusqu'à la session suivante.

836 

837Pour un plugin avec une `command` source, Claude Code [peut recharger le plugin lui-même](/docs/fr/plugin-marketplaces#when-claude-code-re-runs-the-command).

838 

839Les serveurs MCP peuvent également appeler la demande `roots/list` pour lire les répertoires de travail de la session au moment de l'exécution. Voir [ce que `roots/list` retourne et quand Claude Code notifie le serveur des changements](/docs/fr/mcp#option-3-add-a-local-stdio-server).

840 

841<h4 id="persistent-data-directory">

842 Répertoire de données persistant

843</h4>

844 

845Le répertoire `${CLAUDE_PLUGIN_DATA}` se résout à `~/.claude/plugins/data/{id}/`, où `{id}` est l'identifiant du plugin avec les caractères en dehors de `a-z`, `A-Z`, `0-9`, `_`, et `-` remplacés par `-`. Pour un plugin installé comme `formatter@my-marketplace`, le répertoire est `~/.claude/plugins/data/formatter-my-marketplace/`.

846 

847Un usage courant est d'installer les dépendances de langage une fois et de les réutiliser à travers les sessions et les mises à jour de plugins. Utilisez-le pour les dépendances Python, les dépendances verrouillées avec Yarn ou pnpm, et les packages dont les scripts de cycle de vie doivent s'exécuter. Pour un plugin installé depuis le marketplace, vous n'en aurez peut-être pas besoin du tout : Claude Code installe automatiquement les [dépendances de package Node.js éligibles](#node-js-package-dependencies) lorsqu'il met en cache le plugin.

848 

849Parce que le répertoire de données survit à n'importe quelle version de plugin unique, une vérification de l'existence du répertoire seule ne peut pas détecter lorsqu'une mise à jour change le manifeste de dépendance du plugin. Le modèle recommandé compare le manifeste fourni par rapport à une copie dans le répertoire de données et réinstalle lorsqu'ils diffèrent.

850 

851Ce hook `SessionStart` installe `node_modules` à la première exécution et à nouveau chaque fois qu'une mise à jour de plugin inclut un `package.json` modifié :

852 

853```json theme={null}

854{

855 "hooks": {

856 "SessionStart": [

857 {

858 "hooks": [

859 {

860 "type": "command",

861 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

862 }

863 ]

864 }

865 ]

866 }

867}

868```

869 

870Le `diff` sort nonzero lorsque la copie stockée est manquante ou diffère de celle fournie, couvrant à la fois la première exécution et les mises à jour changeant les dépendances. Si `npm install` échoue, le `rm` final supprime le manifeste copié afin que la session suivante réessaye.

871 

872Les scripts fournis dans `${CLAUDE_PLUGIN_ROOT}` peuvent ensuite s'exécuter contre les `node_modules` persistants :

873 

874```json theme={null}

875{

876 "mcpServers": {

877 "routines": {

878 "command": "node",

879 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

880 "env": {

881 "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"

882 }

883 }

884 }

885}

886```

887 

888Le répertoire de données est supprimé automatiquement lorsque vous désinstallez le plugin de la dernière portée où il est installé. L'interface `/plugin` affiche la taille du répertoire et demande avant de supprimer. Le CLI supprime par défaut ; passez [`--keep-data`](#plugin-uninstall) pour le conserver.

889 

890***

891 

892<h2 id="plugin-caching-and-file-resolution">

893 Mise en cache des plugins et résolution des fichiers

894</h2>

895 

896Les plugins sont spécifiés de trois façons :

897 

898* Via `claude --plugin-dir` ou `claude --plugin-url`, pour la durée d'une session.

899* Via une marketplace, installés pour les sessions futures.

900* Via votre compte claude.ai, [synchronisés](#synced-plugins) dans `~/.claude/plugins/synced/`.

901 

902À des fins de sécurité et de vérification, Claude Code copie les plugins de *marketplace* dans le **cache de plugins** local de l'utilisateur (`~/.claude/plugins/cache`), sauf si le plugin se charge sur place. Une [source `command` en mode lien](/docs/fr/plugin-marketplaces#copy-mode-and-link-mode) se charge sur place via des liens dans l'entrée du cache. Une [source de chemin relatif](/docs/fr/plugin-marketplaces#relative-paths) dans une marketplace ajoutée à partir d'un répertoire local se charge sur place à partir du dossier de la marketplace.

903 

904Pour un plugin chargé sur place à partir d'une marketplace de répertoire local, vos modifications du répertoire source prennent effet au prochain démarrage de session ou `/reload-plugins`. Vous n'avez pas besoin d'une augmentation de version. Les processus de hook du plugin et les serveurs MCP et LSP reçoivent un `CLAUDE_PLUGIN_ROOT` qui pointe vers le répertoire source. Claude Code n'installe pas les [dépendances de packages Node.js](#node-js-package-dependencies) du plugin dans le répertoire source. Installez-les vous-même, ou à partir d'un hook dans le [répertoire de données persistantes](#persistent-data-directory).

905 

906Pour les plugins copiés, chaque version installée est un répertoire distinct dans le cache, regroupé par marketplace et plugin et nommé pour la version résolue, avec sa propre copie des fichiers du plugin et des [dépendances de packages Node.js](#node-js-package-dependencies). Une dépendance résolue à partir d'une [balise de version](/docs/fr/plugin-dependencies#tag-plugin-releases-for-version-resolution) obtient un nom de répertoire avec un suffixe de commit-SHA.

907 

908Lorsque vous mettez à jour ou désinstallez un plugin, Claude Code marque le répertoire de la version précédente comme orphelin et le supprime lors d'un balayage en arrière-plan environ 14 jours plus tard. La période de grâce permet aux sessions Claude Code concurrentes qui ont déjà chargé l'ancienne version de continuer à fonctionner sans erreurs. Claude Code exécute le balayage uniquement si au moins un plugin est installé ; après avoir désinstallé votre dernier plugin, les répertoires orphelins restent sur le disque jusqu'à ce que vous installiez à nouveau un plugin.

909 

910Claude Code supprime un dossier de plugin ou de marketplace du cache uniquement lorsqu'il ne contient plus aucun répertoire ou lien symbolique. Si vous créez un lien symbolique vers une extraction de développement dans le cache en tant qu'entrée de version d'un plugin, Claude Code ne marque jamais le lien comme orphelin et ne le supprime jamais, ni les dossiers qui le contiennent. Claude Code n'écrit jamais non plus ses fichiers de suivi de version à l'intérieur de l'extraction liée.

911 

912Les outils Glob et Grep de Claude ignorent les répertoires de version orphelins lors des recherches, de sorte que les résultats de fichiers n'incluent pas le code de plugin obsolète.

913 

914<h3 id="node-js-package-dependencies">

915 Dépendances de packages Node.js

916</h3>

917 

918Lorsque Claude Code copie un plugin dans le cache, il installe également les dépendances de packages Node.js du plugin à cet endroit, afin que les hooks et serveurs MCP du plugin puissent les charger. Cette section couvre les packages npm et Bun qu'un plugin déclare dans son propre `package.json`. Pour les plugins qui dépendent d'autres plugins, voir [versions de dépendances de plugins](/docs/fr/plugin-dependencies).

919 

920Claude Code exécute l'installation dans le répertoire de version copié chaque fois qu'il en crée un : lorsque vous installez un plugin, lorsque Claude Code met à jour un plugin vers une nouvelle version, et au démarrage de la session lorsqu'un plugin activé n'est pas encore en cache, par exemple sur une nouvelle machine. L'installation s'exécute uniquement lorsque le répertoire racine du plugin contient à la fois un `package.json` et un fichier de verrouillage pris en charge :

921 

922| Fichier de verrouillage | Commande |

923| :------------------------------------------- | :----------------------------------------------- |

924| `bun.lock` ou `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |

925| `npm-shrinkwrap.json` ou `package-lock.json` | `npm ci --ignore-scripts` |

926 

927Si un plugin contient plus d'un de ces fichiers de verrouillage, Claude Code utilise la première correspondance, en vérifiant dans l'ordre : `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.

928 

929Claude Code ignore `yarn.lock` et `pnpm-lock.yaml` car Yarn et pnpm prennent en charge les hooks de configuration au moment de la résolution qui contournent `--ignore-scripts`. Lorsqu'un `bunfig.toml` se trouve à côté du fichier de verrouillage bun correspondant, Claude Code ignore complètement l'installation, car le fichier peut configurer un scanner de sécurité que Bun charge et exécute pendant l'installation. La correspondance du nom de fichier ignore la casse. Supprimez le `bunfig.toml`, ou fournissez un fichier de verrouillage npm à la place du fichier de verrouillage bun.

930 

931Livrez un fichier de verrouillage npm pour la plus large portée. Claude Code exécute le gestionnaire de packages du fichier de verrouillage correspondant à partir du PATH de l'utilisateur et ne revient pas au fichier de verrouillage alternatif s'il est manquant. Pour un plugin distribué via une source npm, utilisez `npm-shrinkwrap.json` ; npm exclut `package-lock.json` des packages publiés.

932 

933Claude Code contraint cette installation de dépendances de sorte qu'aucun code du plugin ou de ses packages ne s'exécute pendant celle-ci, et limite la durée pendant laquelle elle peut s'exécuter :

934 

935* **Résolution figée :** Bun et npm installent exactement ce que le fichier de verrouillage épingle, et échouent plutôt que de re-résoudre les versions lorsque `package.json` et le fichier de verrouillage ne sont pas d'accord.

936* **Pas de scripts de cycle de vie :** `--ignore-scripts` empêche les scripts `preinstall`, `install` et `postinstall` de s'exécuter, de sorte que les dépendances qui construisent des modules natifs dans ces scripts téléchargent mais ne se compilent pas pendant cette installation.

937* **Délai d'expiration de 60 secondes :** Claude Code arrête une installation qui s'exécute plus longtemps et la traite comme échouée.

938 

939Claude Code récupère un plugin de source npm avant cette installation de dépendances, et aucun des scripts d'installation propres du package ne s'exécute pendant la récupération. Voir [packages npm](/docs/fr/plugin-marketplaces#npm-packages).

940 

941Une installation échouée ou ignorée ne bloque jamais le plugin. Lorsque l'installation échoue, ou que Claude Code ignore un fichier de verrouillage yarn ou pnpm ou un fichier de verrouillage bun avec un `bunfig.toml` à côté, il enregistre la raison comme un avertissement dans la [sortie de débogage](#debugging-commands). Un plugin avec un `package.json` et aucun fichier de verrouillage est ignoré sans entrée de journal. Une installation qui expire peut laisser un arbre `node_modules` partiel dans la copie en cache.

942 

943Vous ne pouvez pas désactiver l'installation automatique ; aucun paramètre ou variable d'environnement ne la désactive. Dans les réseaux restreints, voir les [exigences d'accès réseau](/docs/fr/network-config#network-access-requirements) pour les hôtes à autoriser.

944 

945Pour les dépendances que l'installation automatique ne peut pas fournir, telles que les packages qui ont besoin de leurs scripts de cycle de vie pour se construire, les dépendances Python, ou un plugin verrouillé avec Yarn ou pnpm, installez-les à partir d'un hook dans le [répertoire de données persistantes](#persistent-data-directory).

946 

947<h3 id="path-traversal-limitations">

948 Limitations de traversée de chemin

949</h3>

950 

951Claude Code ne permet pas à un plugin de référencer des fichiers en dehors de son propre répertoire. Il rejette un chemin de composant qui se résout en dehors de la racine du plugin, que le chemin soit déclaré dans `plugin.json` ou dans une [entrée de marketplace](/docs/fr/plugin-marketplaces#plugin-entries). Cela couvre un chemin qui pointe en dehors du plugin tel qu'écrit, comme `../shared-utils`, et un lien symbolique qui mène en dehors du plugin, autre que les [liens au sein d'une marketplace](#share-files-within-a-marketplace-with-symlinks).

952 

953Sur macOS et Linux, Claude Code rejette également un chemin de composant qui contient une barre oblique inverse n'importe où dedans, même lorsque le chemin reste à l'intérieur du plugin. Les composants déclarés avec des chemins de barre oblique inverse se chargent donc uniquement sous Windows. Écrivez les chemins de composant avec des barres obliques avant, comme `./commands/deploy.md`.

954 

955Lorsque Claude Code rejette un chemin, il signale une erreur [`path escapes plugin directory`](/docs/fr/errors#path-escapes-plugin-directory) et charge le plugin sans ce composant.

956 

957Claude Code ne copie pas non plus les fichiers en dehors du répertoire du plugin dans le cache lorsqu'il installe le plugin, de sorte que lorsqu'un script à l'intérieur d'un plugin copié lit un chemin au-dessus de la racine du plugin, il ne trouve pas non plus ces fichiers.

958 

959<h3 id="share-files-within-a-marketplace-with-symlinks">

960 Partager des fichiers au sein d'une marketplace avec des liens symboliques

961</h3>

962 

963Si votre plugin doit partager des fichiers avec d'autres parties de la même marketplace, vous pouvez créer des liens symboliques à l'intérieur de votre répertoire de plugin. La façon dont un lien symbolique est traité lorsque le plugin est copié dans le cache dépend de l'endroit où sa cible se résout :

964 

965* **Au sein du propre répertoire du plugin :** le lien symbolique est préservé en tant que lien symbolique relatif dans le cache, de sorte qu'il continue de se résoudre à la cible copiée au moment de l'exécution.

966* **Ailleurs au sein de la même marketplace :** le lien symbolique est déréférencé. Le contenu de la cible est copié dans le cache à sa place. Cela permet au répertoire `skills/` d'un meta-plugin de créer un lien vers les compétences définies par d'autres plugins de la marketplace.

967* **En dehors de la marketplace :** le lien symbolique est ignoré pour des raisons de sécurité. Cela empêche les plugins de tirer des fichiers hôtes arbitraires tels que les chemins système dans le cache.

968 

969Pour les plugins installés avec `--plugin-dir`, à partir d'un chemin local, ou à partir d'une [source `command`](/docs/fr/plugin-marketplaces#copy-mode-and-link-mode) en mode copie, seuls les liens symboliques qui se résolvent au sein du propre répertoire du plugin sont préservés. Tous les autres sont ignorés.

970 

971La commande suivante crée un lien à partir d'un plugin de marketplace vers une compétence partagée définie par un plugin frère. Sous Windows, utilisez `mklink /D` à partir d'une invite de commande élevée ou activez le mode développeur :

972 

973```bash theme={null}

974ln -s ../../shared-plugin/skills/foo ./skills/foo

975```

976 

977***

978 

979<h2 id="plugin-directory-structure">

980 Structure du répertoire des plugins

981</h2>

982 

983<h3 id="standard-plugin-layout">

984 Disposition standard des plugins

985</h3>

986 

987Un plugin complet suit cette structure :

988 

989```text theme={null}

990enterprise-plugin/

991├── .claude-plugin/ # Répertoire de métadonnées (optionnel)

992│ └── plugin.json # manifeste du plugin

993├── skills/ # Skills

994│ ├── code-reviewer/

995│ │ └── SKILL.md

996│ └── pdf-processor/

997│ ├── SKILL.md

998│ └── scripts/

999├── commands/ # Skills en tant que fichiers .md plats

1000│ ├── status.md

1001│ └── logs.md

1002├── agents/ # Définitions de sous-agents

1003│ ├── security-reviewer.md

1004│ ├── performance-tester.md

1005│ ├── compliance-checker.md

1006│ └── review/ # Les agents ici se chargent en tant que enterprise-plugin:review:<name>

1007│ └── accessibility.md

1008├── workflows/ # Scripts de flux de travail

1009│ └── release-audit.js

1010├── output-styles/ # Définitions de style de sortie

1011│ └── terse.md

1012├── themes/ # Définitions de thème de couleur

1013│ └── dracula.json

1014├── monitors/ # Configurations de moniteur en arrière-plan

1015│ └── monitors.json

1016├── hooks/ # Configurations de hooks

1017│ ├── hooks.json # Configuration principale des hooks

1018│ └── security-hooks.json # Hooks supplémentaires

1019├── bin/ # Exécutables du plugin ajoutés à PATH

1020│ └── my-tool # Invocable en tant que commande nue dans l'outil Bash

1021├── settings.json # Paramètres par défaut du plugin

1022├── .mcp.json # Définitions du serveur MCP

1023├── .lsp.json # Configurations du serveur LSP

1024├── scripts/ # Scripts de hooks et utilitaires

1025│ ├── security-scan.sh

1026│ ├── format-code.py

1027│ └── deploy.js

1028├── LICENSE # Fichier de licence

1029└── CHANGELOG.md # Historique des versions

1030```

1031 

1032<Warning>

1033 Le répertoire `.claude-plugin/` contient le fichier `plugin.json`. Tous les autres répertoires (commands/, agents/, skills/, workflows/, output-styles/, themes/, monitors/, hooks/) doivent être à la racine du plugin, pas à l'intérieur de `.claude-plugin/`.

1034</Warning>

1035 

1036Un fichier `CLAUDE.md` à la racine du plugin n'est pas chargé en tant que contexte de projet. Les plugins contribuent au contexte par le biais de skills, d'agents et de hooks plutôt que par CLAUDE.md. Pour livrer des instructions qui se chargent dans le contexte de Claude, mettez-les dans un [skill](#skills).

1037 

1038<h3 id="file-locations-reference">

1039 Référence des emplacements de fichiers

1040</h3>

1041 

1042| Composant | Emplacement par défaut | Objectif |

1043| :------------------- | :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1044| **Manifeste** | `.claude-plugin/plugin.json` | Métadonnées et configuration du plugin (optionnel) |

1045| **Skills** | `skills/` | Skills avec la structure `<name>/SKILL.md` |

1046| **Commandes** | `commands/` | Skills en tant que fichiers Markdown plats. Utilisez `skills/` pour les nouveaux plugins |

1047| **Agents** | `agents/` | Fichiers Markdown de sous-agents. Les sous-dossiers font partie du [nom de l'agent](#agents) |

1048| **Flux de travail** | `workflows/` | Fichiers de script de [flux de travail](/docs/fr/workflows) |

1049| **Styles de sortie** | `output-styles/` | Définitions de style de sortie |

1050| **Thèmes** | `themes/` | Définitions de thème de couleur |

1051| **Hooks** | `hooks/hooks.json` | Configuration des hooks |

1052| **Serveurs MCP** | `.mcp.json` | Définitions du serveur MCP |

1053| **Serveurs LSP** | `.lsp.json` | Configurations du serveur de langage |

1054| **Moniteurs** | `monitors/monitors.json` | Configurations de moniteur en arrière-plan |

1055| **Exécutables** | `bin/` | Exécutables ajoutés au `PATH` de l'outil Bash et invocables en tant que commandes nues tandis que le plugin est activé. Vous ne pouvez pas inclure ce répertoire dans un plugin que vous [distribuez via les paramètres de l'organisation claude.ai](/docs/fr/plugin-marketplaces#keep-executables-out-of-the-top-level-bin-directory) |

1056| **Paramètres** | `settings.json` | Configuration par défaut appliquée lorsque le plugin est activé. Seules les clés [`agent`](/docs/fr/sub-agents) et [`subagentStatusLine`](/docs/fr/statusline#subagent-status-lines) sont prises en charge |

1057 

1058***

1059 

1060<h2 id="cli-commands-reference">

1061 Référence des commandes CLI

1062</h2>

1063 

1064Claude Code fournit des commandes CLI pour la gestion non-interactive des plugins, utiles pour les scripts et l'automatisation.

1065 

1066<h3 id="plugin-init">

1067 plugin init

1068</h3>

1069 

1070Créez un nouveau plugin dans `~/.claude/skills/<name>/`. À la prochaine session Claude Code, il se charge automatiquement en tant que `<name>@skills-dir` et apparaît dans `/plugin` et `claude plugin list` sans étape d'installation.

1071 

1072Consultez [Plugins du répertoire de compétences](#skills-directory-plugins) pour les exigences de portée et de confiance.

1073 

1074```bash theme={null}

1075claude plugin init <name> [options]

1076```

1077 

1078La commande prend ces arguments :

1079 

1080* `<name>` : Nom du plugin. Devient l'espace de noms de la compétence et le nom du répertoire sous `~/.claude/skills/`, il ne peut donc pas contenir d'espaces ou de séparateurs de chemin.

1081 

1082La commande accepte ces options :

1083 

1084| Option | Description | Par défaut |

1085| :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | :---------------------- |

1086| `--description <text>` | Description du manifeste | |

1087| `--author <name>` | Nom de l'auteur | `git config user.name` |

1088| `--author-email <email>` | E-mail de l'auteur | `git config user.email` |

1089| `--with <components...>` | Créez également des dossiers de composants. Valeurs valides : `skills`, `agents`, `hooks`, `mcp`, `lsp`, `output-style`, `channel` | |

1090| `-f, --force` | Remplacez un `.claude-plugin/` existant à la cible | |

1091| `-h, --help` | Afficher l'aide pour la commande | |

1092 

1093`claude plugin new` est un alias pour cette commande.

1094 

1095Chaque valeur `--with` ajoute un fichier de démarrage pour ce composant, prêt à être modifié :

1096 

1097| Composant | Ce qu'il crée |

1098| :------------- | :------------------------------------------------------------------------------------------------------------ |

1099| `skills` | Une compétence supplémentaire nommée `<name>:example` à côté de celle par défaut |

1100| `agents` | Une définition de sous-agent `agents/` |

1101| `hooks` | Un `hooks/hooks.json` avec un gestionnaire d'événements exemple |

1102| `mcp` | Un `.mcp.json` avec des exemples de serveur HTTP et stdio |

1103| `lsp` | Un exemple `.lsp.json` de serveur de langage |

1104| `output-style` | Un `output-styles/<name>.md` qui s'applique automatiquement lorsque le plugin est activé |

1105| `channel` | Un [canal](/docs/fr/channels) basé sur MCP : un serveur stdio (`server.ts`), son `.mcp.json`, et un `package.json` |

1106 

1107Le plugin créé utilise la source `@skills-dir` plutôt qu'une marketplace. Les administrateurs peuvent bloquer cette source avec `strictKnownMarketplaces` ou en ajoutant `{"source": "skills-dir"}` à `blockedMarketplaces` dans les [paramètres gérés](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions). Lorsqu'elle est bloquée, `plugin init` échoue avant d'écrire.

1108 

1109Ces exemples montrent les invocations courantes :

1110 

1111```bash theme={null}

1112# Créer un plugin minimal

1113claude plugin init my-helper

1114 

1115# Créer avec des dossiers de compétences et de hooks

1116claude plugin init my-helper --with skills hooks

1117 

1118# Remplacer un scaffold existant

1119claude plugin init my-helper --force

1120```

1121 

1122<h3 id="plugin-install">

1123 plugin install

1124</h3>

1125 

1126Installez un plugin à partir des marketplaces disponibles.

1127 

1128```bash theme={null}

1129claude plugin install <plugin> [options]

1130```

1131 

1132La commande prend ces arguments :

1133 

1134* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name` pour une marketplace spécifique

1135 

1136La commande accepte ces options :

1137 

1138| Option | Description | Par défaut |

1139| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------- |

1140| `-s, --scope <scope>` | Portée d'installation : `user`, `project`, ou `local` | `user` |

1141| `--config <key=value>` | Définissez une option [`userConfig`](#user-configuration) déclarée dans le manifeste du plugin. Répétez le drapeau pour définir plusieurs options | |

1142| `-y, --yes` | Acceptez une commande que la marketplace du plugin déclare, sans l'invite de confirmation : la commande qui produit un plugin avec une [`command` source](/docs/fr/plugin-marketplaces#command-sources), ou le [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) qui authentifie un téléchargement d'archive. Accepter un `headersHelper` nécessite Claude Code v2.1.238 ou ultérieur. Claude Code imprime toujours la commande en premier. Requis lorsque stdin ou stdout n'est pas un TTY, sauf si vous passez `--accept-command`. N'a aucun effet dans une session Claude Code, exécutez donc la commande depuis votre propre terminal | |

1143| `--accept-command <sha256>` | Acceptez la commande déclarée par la marketplace dont le `sha256` qu'une exécution [`--json`](#plugin-json-result) précédente a rapporté dans `shownCommand`, à la place de `-y`. L'acceptation compte pour exactement cette commande, ce plugin, et ce catalogue de marketplace. Si l'un d'eux a changé depuis que la commande a été affichée, y compris par l'actualisation de la marketplace de l'exécution elle-même, Claude Code n'accepte pas le digest et affiche la commande à nouveau. Ne peut pas être combiné avec `-y`. N'a aucun effet dans une session Claude Code, exécutez donc la commande depuis votre propre terminal. Nécessite Claude Code v2.1.271 ou ultérieur | |

1144| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout au lieu du message lisible par l'homme, pour une utilisation dans les scripts. Consultez [Format de résultat JSON](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur | |

1145| `-h, --help` | Afficher l'aide pour la commande | |

1146 

1147La portée détermine quel fichier de paramètres le plugin installé est ajouté à. Par exemple, `--scope project` écrit dans `enabledPlugins` dans .claude/settings.json, rendant le plugin disponible pour tous ceux qui clonent le référentiel du projet.

1148 

1149<span id="plugin-json-result" />Avec `--json`, la dernière ligne de stdout est un objet JSON. Analysez uniquement cette ligne, car Claude Code imprime toute commande que la marketplace déclare avant elle. Trois champs sont toujours présents :

1150 

1151* `command` : la sous-commande qui a été exécutée, comme `install`

1152* `outcome` : `ok` ou `failed`

1153* `message` : une description lisible par l'homme du résultat

1154 

1155D'autres champs, tels que `pluginId`, `scope`, et `failureCode`, n'apparaissent que lorsqu'ils s'appliquent. L'option `--json` sur `plugin uninstall`, `plugin update`, `plugin enable`, et `plugin disable` imprime le même objet avec les propres champs de cette sous-commande. Une erreur d'utilisation, comme un `--scope` invalide, n'imprime aucune ligne de résultat et quitte 1 avec la raison sur stderr.

1156 

1157Lorsqu'une exécution affiche une commande déclarée par la marketplace et ne l'exécute pas, le résultat `failed` porte également un objet `shownCommand` dont les champs incluent la commande telle qu'affichée, le plugin auquel elle appartient, et le `sha256` de la commande. Pour accepter exactement cette commande, réexécutez avec ce `sha256` en tant que `--accept-command`. Nécessite Claude Code v2.1.271 ou ultérieur.

1158 

1159Si `shownCommand.acceptCommandMatched` est `false`, le digest que vous avez passé ne correspond pas à la commande maintenant affichée. Montrez cette commande à une personne avant de passer son `sha256`.

1160 

1161Ces exemples montrent les invocations courantes :

1162 

1163```bash theme={null}

1164# Installer dans la portée utilisateur (par défaut)

1165claude plugin install formatter@my-marketplace

1166 

1167# Installer dans la portée du projet (partagé avec l'équipe)

1168claude plugin install formatter@my-marketplace --scope project

1169 

1170# Installer dans la portée locale (non partagé avec l'équipe)

1171claude plugin install formatter@my-marketplace --scope local

1172```

1173 

1174<h3 id="plugin-uninstall">

1175 plugin uninstall

1176</h3>

1177 

1178Supprimez un plugin installé.

1179 

1180```bash theme={null}

1181claude plugin uninstall <plugin> [options]

1182```

1183 

1184La commande prend ces arguments :

1185 

1186* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`

1187 

1188La commande accepte ces options :

1189 

1190| Option | Description | Par défaut |

1191| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

1192| `-s, --scope <scope>` | Désinstaller de la portée : `user`, `project`, ou `local` | `user` |

1193| `--keep-data` | Préservez le [répertoire de données persistantes](#persistent-data-directory) du plugin | |

1194| `--prune` | Supprimez également les dépendances auto-installées qu'aucun autre plugin ne nécessite. Consultez [plugin prune](#plugin-prune) | |

1195| `-y, --yes` | Ignorez l'invite de confirmation `--prune`. Requis lorsque stdin ou stdout n'est pas un TTY | |

1196| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, au [même format que `plugin install --json`](#plugin-json-result). Ne peut pas être combiné avec `--prune`. Nécessite Claude Code v2.1.268 ou ultérieur | |

1197| `-h, --help` | Afficher l'aide pour la commande | |

1198 

1199`claude plugin remove` et `claude plugin rm` sont des alias pour cette commande.

1200 

1201Par défaut, la désinstallation de la dernière portée restante supprime également le répertoire `${CLAUDE_PLUGIN_DATA}` du plugin. Utilisez `--keep-data` pour le préserver, par exemple lors de la réinstallation après avoir testé une nouvelle version.

1202 

1203<Note>

1204 Lorsque les plugins installés de différentes marketplaces partagent un nom, la forme `plugin-name@marketplace-name` désinstalle uniquement le plugin de la marketplace nommée. Avant v2.1.212, la forme qualifiée pouvait correspondre et désinstaller le plugin du même nom d'une marketplace différente.

1205</Note>

1206 

1207<h3 id="plugin-prune">

1208 plugin prune

1209</h3>

1210 

1211Supprimez les dépendances de plugin auto-installées qui ne sont plus requises par aucun plugin installé. Les dépendances que Claude Code a intégrées pour satisfaire le champ [`dependencies`](/docs/fr/plugin-dependencies) d'un autre plugin sont supprimées ; les plugins que vous avez installés directement ne sont jamais touchés.

1212 

1213```bash theme={null}

1214claude plugin prune [options]

1215```

1216 

1217La commande accepte ces options :

1218 

1219| Option | Description | Par défaut |

1220| :-------------------- | :-------------------------------------------------------------------------------- | :--------- |

1221| `-s, --scope <scope>` | Élaguer à la portée : `user`, `project`, ou `local` | `user` |

1222| `--dry-run` | Listez ce qui serait supprimé sans rien supprimer | |

1223| `-y, --yes` | Ignorez l'invite de confirmation. Requis lorsque stdin ou stdout n'est pas un TTY | |

1224| `-h, --help` | Afficher l'aide pour la commande | |

1225 

1226`claude plugin autoremove` est un alias pour cette commande.

1227 

1228La commande liste les dépendances orphelines et demande une confirmation avant de les supprimer. Pour supprimer un plugin et nettoyer ses dépendances en une seule étape, exécutez `claude plugin uninstall <plugin> --prune`.

1229 

1230<h3 id="plugin-enable">

1231 plugin enable

1232</h3>

1233 

1234Activez un plugin désactivé. Lorsque la cible est installée à partir d'une marketplace et déclare des [dépendances](/docs/fr/plugin-dependencies), Claude Code les active transitivement à la même portée. La commande échoue dans les conditions que [Activer ou désactiver un plugin avec des dépendances](/docs/fr/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) énumère.

1235 

1236```bash theme={null}

1237claude plugin enable <plugin> [options]

1238```

1239 

1240La commande prend ces arguments :

1241 

1242* `<plugin>` : Nom du plugin, `plugin-name@marketplace-name`, ou `plugin-name@synced` pour un [plugin synchronisé depuis claude.ai](#synced-plugins)

1243 

1244La commande accepte ces options :

1245 

1246| Option | Description | Par défaut |

1247| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------- |

1248| `-s, --scope <scope>` | Portée à activer : `user`, `project`, ou `local`. Lorsqu'elle est omise, Claude Code détecte la portée où le plugin est installé | Détection automatique |

1249| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, au [même format que `plugin install --json`](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur | |

1250| `-h, --help` | Afficher l'aide pour la commande | |

1251 

1252<h3 id="plugin-disable">

1253 plugin disable

1254</h3>

1255 

1256Désactivez un plugin sans le désinstaller.

1257 

1258Lorsque la cible est installée à partir d'une marketplace, la commande échoue si un autre plugin activé [en dépend](/docs/fr/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies). Le message d'erreur inclut une commande chaînée qui désactive d'abord chaque dépendant.

1259 

1260Pour un [plugin synchronisé](#synced-plugins) que votre organisation exige, la commande échoue et ne sauvegarde rien.

1261 

1262```bash theme={null}

1263claude plugin disable [plugin] [options]

1264```

1265 

1266La commande prend ces arguments :

1267 

1268* `[plugin]` : Nom du plugin, `plugin-name@marketplace-name`, ou `plugin-name@synced` pour un [plugin synchronisé depuis claude.ai](#synced-plugins). Optionnel lors de l'utilisation de `--all`

1269 

1270La commande accepte ces options :

1271 

1272| Option | Description | Par défaut |

1273| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------- |

1274| `-a, --all` | Désactivez tous les plugins activés. Ne peut pas être combiné avec `--scope` | |

1275| `-s, --scope <scope>` | Portée à désactiver : `user`, `project`, ou `local`. Lorsqu'elle est omise, Claude Code détecte la portée où le plugin est installé | Détection automatique |

1276| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, au [même format que `plugin install --json`](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur | |

1277| `-h, --help` | Afficher l'aide pour la commande | |

1278 

1279<h3 id="plugin-update">

1280 plugin update

1281</h3>

1282 

1283Mettez à jour un plugin vers la dernière version.

1284 

1285```bash theme={null}

1286claude plugin update <plugin> [options]

1287```

1288 

1289La commande prend ces arguments :

1290 

1291* `<plugin>` : Nom du plugin ou `plugin-name@marketplace-name`

1292 

1293La commande accepte ces options :

1294 

1295| Option | Description | Par défaut |

1296| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------- |

1297| `-s, --scope <scope>` | Portée à mettre à jour : `user`, `project`, `local`, ou `managed` | `user` |

1298| `-y, --yes` | Acceptez une commande que la marketplace du plugin déclare, sans l'invite de confirmation : la commande qui produit un plugin avec une [`command` source](/docs/fr/plugin-marketplaces#command-sources), ou le [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) qui authentifie un téléchargement d'archive. Accepter un `headersHelper` nécessite Claude Code v2.1.238 ou ultérieur. Claude Code imprime toujours la commande en premier. Requis lorsque stdin ou stdout n'est pas un TTY, sauf si vous passez `--accept-command`. N'a aucun effet dans une session Claude Code, exécutez donc la commande depuis votre propre terminal | |

1299| `--accept-command <sha256>` | Acceptez la commande déclarée par la marketplace dont le `sha256` qu'une exécution [`--json`](#plugin-json-result) précédente a rapporté dans `shownCommand`, à la place de `-y`. L'acceptation compte pour exactement cette commande, ce plugin, et ce catalogue de marketplace. Si l'un d'eux a changé depuis que la commande a été affichée, y compris par l'actualisation de la marketplace de l'exécution elle-même, Claude Code n'accepte pas le digest et affiche la commande à nouveau. Ne peut pas être combiné avec `-y`. N'a aucun effet dans une session Claude Code, exécutez donc la commande depuis votre propre terminal. Nécessite Claude Code v2.1.271 ou ultérieur | |

1300| `--json` | Imprimez le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, au [même format que `plugin install --json`](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur | |

1301| `-h, --help` | Afficher l'aide pour la commande | |

1302 

1303<Note>

1304 Claude Code résout un nom de plugin nu par rapport à vos plugins installés. Lorsque les plugins installés de différentes marketplaces partagent le nom, Claude Code refuse la mise à jour et énumère les commandes `plugin-name@marketplace-name` qualifiées à exécuter à la place. Avant v2.1.246, Claude Code acceptait uniquement la forme qualifiée et rejetait un nom nu comme non trouvé.

1305</Note>

1306 

1307***

1308 

1309<h3 id="plugin-list">

1310 plugin list

1311</h3>

1312 

1313Listez les plugins installés avec leur version, leur marketplace source et leur statut d'activation.

1314 

1315```bash theme={null}

1316claude plugin list [options]

1317```

1318 

1319La commande accepte ces options :

1320 

1321| Option | Description | Par défaut |

1322| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

1323| `--json` | Sortie en JSON. Une ligne de plugin avec des problèmes de chargement ou des avertissements de création porte des tableaux de chaînes `errors` ou `notes`. Sur Claude Code v2.1.268 ou ultérieur, les tableaux parallèles `errorDetails` et `noteDetails` donnent à chaque entrée son `type` de diagnostic et les noms auxquels elle se réfère, comme le plugin, la marketplace, le serveur ou le fichier | |

1324| `--available` | Incluez les plugins disponibles des marketplaces. Nécessite `--json` | |

1325| `-h, --help` | Afficher l'aide pour la commande | |

1326 

1327Dans une session interactive, `/plugin list` imprime un listage similaire en ligne, mais il couvre uniquement les plugins installés depuis une marketplace :

1328 

1329* Les plugins chargés à partir des répertoires de compétences apparaissent dans l'interface `/plugin` et dans `claude plugin list`, mais pas dans la sortie en ligne `/plugin list`.

1330* [Les plugins synchronisés depuis claude.ai](#synced-plugins) apparaissent dans `claude plugin list` sur Claude Code v2.1.239 ou ultérieur et dans l'interface `/plugin`, mais pas dans la sortie en ligne `/plugin list`.

1331* Les plugins chargés pour la session avec `--plugin-dir` ou `--plugin-url` apparaissent dans l'interface `/plugin`, et dans `claude plugin list` uniquement lorsque le même drapeau précède la sous-commande, comme dans `claude --plugin-dir <dir> plugin list`. Seul le nom du drapeau indique leur emplacement, donc un `claude plugin list` nu ne peut pas les trouver, contrairement aux plugins synchronisés et aux plugins du répertoire de compétences, dont les répertoires fixes sont analysés par Claude Code.

1332 

1333La forme interactive accepte `--enabled` ou `--disabled` pour afficher uniquement les plugins dans cet état, et `ls` comme raccourci pour `list`.

1334 

1335<h3 id="plugin-details">

1336 plugin details

1337</h3>

1338 

1339Affichez l'inventaire des composants d'un plugin et le coût en jetons projeté. La sortie énumère tous les composants que le plugin contribue, regroupés en tant que Compétences, Agents, Hooks, serveurs MCP et serveurs LSP, ainsi qu'une estimation du nombre de jetons qu'il ajoute à chaque session. Le groupe Compétences inclut à la fois les entrées `skills/` et `commands/`.

1340 

1341```bash theme={null}

1342claude plugin details <name>

1343```

1344 

1345La commande prend ces arguments :

1346 

1347* `<name>` : Nom du plugin ou `plugin-name@marketplace-name`

1348 

1349La commande accepte ces options :

1350 

1351| Option | Description | Par défaut |

1352| :----------- | :------------------------------- | :--------- |

1353| `-h, --help` | Afficher l'aide pour la commande | |

1354 

1355La sortie affiche deux chiffres de coût pour chaque composant :

1356 

1357* **Toujours actif :** jetons ajoutés à chaque session par le texte de listage du plugin, comme les descriptions de compétences, les descriptions d'agents et les noms de commandes, indépendamment du fait qu'un composant se déclenche ou non.

1358* **À l'invocation :** jetons qu'un composant coûte lorsqu'il se déclenche. Affiché par composant, pas comme un total de plugin, car une session typique n'invoque qu'un sous-ensemble de composants.

1359 

1360Cet exemple montre à quoi ressemble la sortie pour un plugin avec deux compétences :

1361 

1362```

1363dependency-guard 1.2.0

1364 Dependency analysis for Claude Code sessions

1365 Source: dependency-guard@example-marketplace

1366 

1367Component inventory

1368 Skills (2) scan-dependencies, review-changes

1369 Agents (0)

1370 Hooks (1) SessionStart (harness-only — no model context cost)

1371 MCP servers (0)

1372 LSP servers (0)

1373 

1374Projected token cost

1375 Always-on: ~180 tok added to every session

1376 

1377Per-component (rounded)

1378 component always-on on-invoke

1379 scan-dependencies ~100 ~2400

1380 review-changes ~80 ~1800

1381 

1382 On-invoke cost is paid each time a skill or agent fires.

1383 Token counts are estimates and may differ from actual usage.

1384```

1385 

1386Le total toujours actif est calculé via l'API `count_tokens` pour votre modèle actif. Les nombres par composant sont proportionnellement mis à l'échelle à partir de ce total. Si l'API est inaccessible, la commande revient à une estimation basée sur les caractères.

1387 

1388<h3 id="plugin-validate">

1389 plugin validate

1390</h3>

1391 

1392Vérifiez un plugin ou une marketplace pour les erreurs de syntaxe et de schéma avant la publication.

1393 

1394La commande quitte 0 lorsque la validation réussit, 1 lorsqu'elle échoue, et 2 lorsque l'exécution de la validation elle-même échoue, par exemple lorsque le chemin que vous transmettez est illisible.

1395 

1396```bash theme={null}

1397claude plugin validate <path> [options]

1398```

1399 

1400La commande prend ces arguments :

1401 

1402* `<path>` : Chemin vers un répertoire de plugin ou un répertoire de marketplace. Consultez [Valider un plugin ou un répertoire sans manifeste](/docs/fr/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) pour savoir quels fichiers une exécution de plugin couvre.

1403 

1404La commande accepte ces options :

1405 

1406| Option | Description | Par défaut |

1407| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------- |

1408| `--strict` | Traitez les avertissements comme des erreurs et quittez 1 sur eux. Utilisez dans CI pour détecter les problèmes que le runtime tolère, comme les [champs non reconnus](#unrecognized-fields) | |

1409| `--json` | Sortez le rapport de validation en tant qu'un objet JSON avec les mêmes codes de sortie. Nécessite Claude Code v2.1.259 ou ultérieur | |

1410| `-h, --help` | Afficher l'aide pour la commande | |

1411 

1412Avec `--json`, Claude Code écrit le rapport sur stdout en tant qu'un objet JSON avec ces champs de niveau supérieur :

1413 

1414* `success` : le même verdict que le code de sortie donne

1415* `strict` : si l'exécution a traité les avertissements comme des erreurs

1416* `target` : le chemin résolu que Claude Code a validé

1417* `manifest` : le propre résultat du manifeste, ou `null` pour une [exécution sans manifeste](/docs/fr/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest)

1418* `contents` : résultats par fichier, chacun nommant son `file` et portant des tableaux `errors`, `warnings`, et `notes`

1419 

1420À la sortie 2, la commande n'écrit rien sur stdout ; le message d'erreur va à stderr.

1421 

1422Dans une session interactive, `/plugin validate <path>` exécute les mêmes vérifications en ligne.

1423 

1424<h3 id="plugin-eval">

1425 plugin eval

1426</h3>

1427 

1428Exécutez les [cas d'évaluation](/docs/fr/plugin-evals) d'un plugin et rapportez les résultats notés. Nécessite Claude Code v2.1.269 ou ultérieur. Chaque cas est une invite plus des évaluateurs ; Claude Code l'exécute plusieurs fois dans une session isolée avec uniquement le plugin cible chargé, et par défaut aussi sans le plugin afin que le rapport montre la différence. Consultez [Tester les plugins avec des évaluations](/docs/fr/plugin-evals) pour le format des cas, les évaluateurs, les résultats et l'utilisation en CI.

1429 

1430```bash theme={null}

1431claude plugin eval [target] [options]

1432```

1433 

1434La `target` optionnelle est un répertoire de plugin, un seul fichier `prompt.md` ou `case.yaml`, un plugin installé en tant que `name` ou `name@marketplace`, ou `name@skills-dir`, et par défaut le répertoire courant. Mettez-le avant `--tag`, `--allow-tools`, et `--json`.

1435 

1436Ce tableau énumère les options que la plupart des exécutions utilisent. Exécutez `claude plugin eval --help` pour l'ensemble complet, y compris `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, et `--verbose`.

1437 

1438| Option | Description | Par défaut |

1439| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------- |

1440| `--runs <n>` | Exécutions par cas par bras | `runs` de chaque cas, sinon 3 |

1441| `-j, --concurrency <n>` | Sessions d'agent à exécuter à la fois, 1 à 8. Elles partagent votre limite de débit | `1` |

1442| `--model <model>` | Modèle pour l'agent en test | `model` de chaque cas, sinon `ANTHROPIC_MODEL` s'il est défini, sinon la valeur par défaut de Claude Code |

1443| `--judge-model <model>` | Modèle pour les évaluateurs `llm` et `baseline` | Un petit modèle rapide |

1444| `--ablation <mode>` | `none` ou `with-without`. Consultez [Comparer par rapport à une ligne de base sans plugin](/docs/fr/plugin-evals#compare-against-a-no-plugin-baseline) | `with-without` lorsqu'un plugin se résout, sinon `none` |

1445| `--threshold <0..1>` | Quittez 1 si un cas quelconque note en dessous de ceci | `1.0` |

1446| `--max-cost-usd <usd>` | Arrêtez avant la prochaine exécution une fois que les dépenses atteignent ceci, quittez 2, et rapportez les résultats partiels | Pas de plafond |

1447| `--allow-tools <tools...>` | Accordez des outils au-delà de l'ensemble en lecture seule, comme `Bash`, `Write`, `Edit`, ou `"mcp__plugin_<plugin>_<server>__*"`. Consultez [Accorder des outils](/docs/fr/plugin-evals#grant-tools) | |

1448| `--scaffold` | Exécutez le [`scaffold_script`](/docs/fr/plugin-evals#add-setup-or-history-with-case-yaml) de chaque cas | Désactivé |

1449| `--trust-plugin` | Ignorez l'invite de confiance à la première exécution, pour CI. Consultez [Ce qu'une exécution peut accéder](/docs/fr/plugin-evals#security) | Désactivé |

1450| `--mocks <mode>` | `record` ou `off`. Consultez [Serveurs MCP fictifs](/docs/fr/plugin-evals#mock-mcp-servers) | `record` |

1451| `--eval-dir <dir>` | Répertoire sous le plugin qui contient les cas | Le `experimental.evals` du manifeste, sinon `evals` |

1452| `--json [path]` | Imprimez le [document de résultat](/docs/fr/plugin-evals#json-result) sur stdout, ou écrivez-le dans un chemin `.json` | |

1453| `--no-publish` | Gardez le rapport HTML local | |

1454| `-h, --help` | Afficher l'aide pour la commande | |

1455 

1456La commande quitte 0 lorsque chaque cas respecte le seuil, 1 sur un cas défaillant, une erreur de chargement, ou un répertoire de plugin non approuvé, 2 sur une exécution partielle, 130 lorsqu'elle est interrompue, et 143 lorsqu'elle est terminée. Consultez [Exécuter les évaluations en CI](/docs/fr/plugin-evals#run-evals-in-ci).

1457 

1458<h3 id="plugin-eval-init">

1459 plugin eval init

1460</h3>

1461 

1462Créez une suite d'évaluation pour le plugin dans le répertoire courant. Nécessite Claude Code v2.1.269 ou ultérieur. Dans un terminal, cela démarre une interview de création qui lit le plugin, propose des cas et des évaluateurs, les teste, et écrit les fichiers. Avec `--bare`, ou sans terminal, il écrit un modèle de cas unique vierge à la place. Exécutez depuis une session Claude Code interactive, il imprime les instructions d'interview pour que cette session suive plutôt que d'écrire un modèle. Consultez [Créer votre première suite d'évaluation](/docs/fr/plugin-evals#create-your-first-eval-suite).

1463 

1464```bash theme={null}

1465claude plugin eval init [name] [options]

1466```

1467 

1468Le `name` optionnel est un nom de cas : l'interview n'en a pas besoin, tandis que `--bare` et le chemin du modèle sans terminal l'exigent. Il accepte ces options :

1469 

1470| Option | Description | Par défaut |

1471| :------------------ | :-------------------------------------------------------------------------------------------------- | :-------------------------------------------------- |

1472| `--bare` | Écrivez un `prompt.md` vierge et `graders/criteria.md` pour `<name>` au lieu d'exécuter l'interview | |

1473| `-i, --interactive` | Exigez l'interview. Échoue sans terminal au lieu d'écrire un modèle | |

1474| `--eval-dir <dir>` | Répertoire sous le répertoire courant pour écrire les cas dans | Le `experimental.evals` du manifeste, sinon `evals` |

1475| `-h, --help` | Afficher l'aide pour la commande | |

1476 

1477<h3 id="plugin-tag">

1478 plugin tag

1479</h3>

1480 

1481Créez une balise git de version pour un plugin. Par défaut, la commande balise le plugin dans le répertoire courant ; transmettez un chemin pour baliser un plugin ailleurs. Consultez [Baliser les versions de plugin](/docs/fr/plugin-dependencies#tag-plugin-releases-for-version-resolution).

1482 

1483```bash theme={null}

1484claude plugin tag [path] [options]

1485```

1486 

1487La commande prend ces arguments :

1488 

1489* `[path]` : Chemin vers le répertoire du plugin. Par défaut, le répertoire courant.

1490 

1491La commande accepte ces options :

1492 

1493| Option | Description | Par défaut |

1494| :-------------------- | :---------------------------------------------------------------------------------- | :--------- |

1495| `--push` | Poussez la balise vers le serveur distant après l'avoir créée | |

1496| `--dry-run` | Imprimez ce qui serait balisé sans créer la balise | |

1497| `-f, --force` | Créez la balise même si l'arborescence de travail est sale ou la balise existe déjà | |

1498| `-m, --message <msg>` | Message d'annotation de balise. Utilisez `%s` comme espace réservé pour la version | |

1499| `--remote <name>` | Serveur distant vers lequel pousser avec `--push` | `origin` |

1500| `-h, --help` | Afficher l'aide pour la commande | |

1501 

1502***

1503 

1504<h2 id="debugging-and-development-tools">

1505 Outils de débogage et de développement

1506</h2>

1507 

1508<h3 id="debugging-commands">

1509 Commandes de débogage

1510</h3>

1511 

1512Utilisez `claude --debug` pour voir les détails du chargement des plugins :

1513 

1514Cela affiche :

1515 

1516* Les plugins en cours de chargement

1517* Les erreurs dans les manifestes de plugins

1518* L'enregistrement des skills, agents et hooks

1519* L'initialisation du serveur MCP

1520 

1521<h3 id="common-issues">

1522 Problèmes courants

1523</h3>

1524 

1525| Problème | Cause | Solution |

1526| :---------------------------------- | :--------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1527| Plugin ne se charge pas | `plugin.json` invalide | Exécutez `claude plugin validate ./my-plugin` ou `/plugin validate ./my-plugin`, où `./my-plugin` est votre répertoire de plugin, pour vérifier `plugin.json`, `hooks/hooks.json` et le frontmatter des skills, agents et commandes dans les répertoires par défaut du plugin pour les erreurs de syntaxe et de schéma. Consultez [Validate a plugin or a directory without a manifest](/docs/fr/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) pour savoir ce qu'une exécution couvre |

1528| Les skills n'apparaissent pas | Structure de répertoire incorrecte | Assurez-vous que `skills/` ou `commands/` se trouve à la racine du plugin, pas à l'intérieur de `.claude-plugin/` |

1529| Les hooks ne se déclenchent pas | Script non exécutable | Exécutez `chmod +x script.sh` |

1530| Le serveur MCP échoue | `${CLAUDE_PLUGIN_ROOT}` manquant | Utilisez la variable pour tous les chemins de plugin |

1531| Erreurs de chemin | Chemins absolus utilisés | Rendez les chemins relatifs, en commençant par `./` ; consultez [Path behavior rules](#path-behavior-rules), qui couvrent l'exception `"."` du champ `skills` |

1532| LSP `Executable not found in $PATH` | Serveur de langage non installé | Installez le binaire (par exemple, `npm install -g typescript-language-server typescript`) |

1533 

1534<h3 id="example-error-messages">

1535 Exemples de messages d'erreur

1536</h3>

1537 

1538**Erreurs de validation de manifeste** :

1539 

1540* `Invalid JSON syntax: Unexpected token } in JSON at position 142` : vérifiez les virgules manquantes, les virgules supplémentaires ou les chaînes non citées

1541* `Plugin <name> has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Invalid input: expected string, received undefined` : un champ obligatoire est manquant

1542* `Plugin <name> has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...` : erreur de syntaxe JSON. Avant v2.1.246, Claude Code produisait également cette erreur pour un `plugin.json` enregistré en UTF-8 avec une marque d'ordre des octets (BOM), même lorsque le JSON était par ailleurs valide.

1543 

1544**Erreurs de chargement de plugin** :

1545 

1546* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.` : le chemin de la commande existe mais ne contient aucun fichier de commande valide

1547* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.` : le chemin `source` dans marketplace.json pointe vers un répertoire inexistant

1548* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.` : supprimez les définitions de composants en double ou supprimez `strict: false` dans l'entrée marketplace

1549 

1550<h3 id="hook-troubleshooting">

1551 Dépannage des hooks

1552</h3>

1553 

1554**Le script du hook ne s'exécute pas** :

1555 

15561. Vérifiez que le script est exécutable : `chmod +x ./scripts/your-script.sh`

15572. Vérifiez la ligne shebang : La première ligne doit être `#!/bin/bash` ou `#!/usr/bin/env bash`

15583. Vérifiez que le chemin utilise `${CLAUDE_PLUGIN_ROOT}` : `"command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/your-script.sh"`

15594. Testez le script manuellement : `./scripts/your-script.sh`

1560 

1561**Le hook ne se déclenche pas sur les événements attendus** :

1562 

15631. Vérifiez que le nom de l'événement est correct (sensible à la casse) : `PostToolUse`, pas `postToolUse`

15642. Vérifiez que le motif du matcher correspond à vos outils : `"matcher": "Write|Edit"` pour les opérations de fichier

15653. Confirmez que le type de hook est valide : `command`, `http`, `mcp_tool`, `prompt` ou `agent`

1566 

1567<h3 id="mcp-server-troubleshooting">

1568 Dépannage du serveur MCP

1569</h3>

1570 

1571**Le serveur ne démarre pas** :

1572 

15731. Vérifiez que la commande existe et est exécutable

15742. Vérifiez que tous les chemins utilisent la variable `${CLAUDE_PLUGIN_ROOT}`

15753. Vérifiez les journaux du serveur MCP : `claude --debug` affiche les erreurs d'initialisation

15764. Testez le serveur manuellement en dehors de Claude Code

1577 

1578**Les outils du serveur n'apparaissent pas** :

1579 

15801. Assurez-vous que le serveur est correctement configuré dans `.mcp.json` ou `plugin.json`

15812. Vérifiez que le serveur implémente correctement le protocole MCP

15823. Vérifiez les délais d'expiration de la connexion dans la sortie de débogage

1583 

1584<h3 id="directory-structure-mistakes">

1585 Erreurs de structure de répertoire

1586</h3>

1587 

1588**Symptômes** : Le plugin se charge mais les composants (skills, agents, hooks) sont manquants.

1589 

1590**Structure correcte** : Les composants doivent être à la racine du plugin, pas à l'intérieur de `.claude-plugin/`. Seul `plugin.json` appartient à `.claude-plugin/`.

1591 

1592**Liste de contrôle de débogage** :

1593 

15941. Exécutez `claude --debug` et recherchez les messages « loading plugin »

15952. Vérifiez que chaque répertoire de composant est listé dans la sortie de débogage

15963. Vérifiez que les permissions de fichier permettent de lire les fichiers du plugin

1597 

1598***

1599 

1600<h2 id="distribution-and-versioning-reference">

1601 Référence de distribution et de versioning

1602</h2>

1603 

1604<h3 id="version-management">

1605 Gestion des versions

1606</h3>

1607 

1608Claude Code utilise la version du plugin comme clé de cache qui détermine si une mise à jour est disponible. Lorsque vous exécutez `/plugin update` ou que la mise à jour automatique se déclenche, Claude Code calcule la version actuelle et ignore la mise à jour si elle correspond à celle déjà installée. Un plugin [chargé sur place](#plugin-caching-and-file-resolution) à partir d'une marketplace de répertoire local charge ses fichiers source actuels à chaque démarrage de session, quelle que soit sa chaîne de version.

1609 

1610Pour chaque type de source sauf `command`, Claude Code résout la version à partir du premier de ces éléments qui est défini :

1611 

16121. Le champ `version` dans le fichier `plugin.json` du plugin

16132. Le champ `version` dans l'entrée marketplace du plugin dans `marketplace.json`

16143. Le SHA du commit git du plugin, pour les sources `github`, `url`, `git-subdir` et relative-path dans une marketplace hébergée sur git

16154. Le digest SHA-256, pour les [sources `archive`](/docs/fr/plugin-marketplaces#zip-archives) : le pin `sha256` dans l'entrée marketplace, ou le digest du fichier téléchargé lorsque vous ne définissez aucun pin. Claude Code le raccourcit aux 12 premiers caractères

16165. `unknown`, pour les sources `npm` ou les répertoires locaux ne se trouvant pas dans un dépôt git. Claude Code ne prend pas la version à partir d'un référentiel qui enferme le chemin d'installation, comme un `~/.claude` géré par git

1617 

1618Pour une [source `command`](/docs/fr/plugin-marketplaces#command-sources), Claude Code dérive toujours la version à partir de ce que la commande a produit : un hash de contenu de 12 caractères seul, ou ajouté à la version `plugin.json` sous la forme `<version>-<hash>` lorsqu'une version est définie. Claude Code ignore le champ `version` de l'entrée marketplace pour les sources command. Une commande dont la sortie hachée change produit donc une nouvelle version, même lorsque la chaîne de version créée reste la même. En [mode lien](/docs/fr/plugin-marketplaces#copy-mode-and-link-mode), le hash couvre le chemin réel du répertoire imprimé et ses entrées de niveau supérieur plutôt que le contenu des fichiers.

1619 

1620Pour ces types de sources, cela vous donne trois façons de versionner un plugin :

1621 

1622| Approche | Comment | Comportement de mise à jour | Idéal pour |

1623| :------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------- |

1624| **Version explicite** | Définissez `"version": "2.1.0"` dans `plugin.json` | Les utilisateurs reçoivent les mises à jour uniquement lorsque vous augmentez ce champ. Pousser de nouveaux commits sans l'augmenter n'a aucun effet, et `/plugin update` signale « déjà à la dernière version ». Pour un plugin [chargé sur place](#plugin-caching-and-file-resolution), le nouveau contenu se charge de toute façon. | Plugins publiés avec des cycles de publication stables |

1625| **Version SHA du commit** | Omettez `version` à la fois de `plugin.json` et de l'entrée marketplace | Les utilisateurs reçoivent les mises à jour chaque fois que le commit résolu de la source change | Plugins internes ou d'équipe en développement actif |

1626| **Version du digest** | Utilisez une [source `archive`](/docs/fr/plugin-marketplaces#zip-archives) et omettez `version` à la fois de `plugin.json` et de l'entrée marketplace | Avec un pin `sha256`, les utilisateurs reçoivent les mises à jour lorsque vous modifiez le pin. Sans pin, les utilisateurs reçoivent les mises à jour chaque fois que les octets du fichier zip hébergé changent | Plugins publiés en tant que fichiers zip sur un serveur statique ou un référentiel d'artefacts |

1627 

1628Si vous utilisez des versions explicites, suivez le [versioning sémantique](https://semver.org) (`MAJOR.MINOR.PATCH`) : augmentez MAJOR pour les modifications incompatibles, MINOR pour les nouvelles fonctionnalités, PATCH pour les corrections de bogues. Documentez les modifications dans un fichier `CHANGELOG.md`.

1629 

1630***

1631 

1632<h2 id="see-also">

1633 Voir aussi

1634</h2>

1635 

1636* [Plugins](/docs/fr/plugins) - Tutoriels et utilisation pratique

1637* [Marketplaces de plugins](/docs/fr/plugin-marketplaces) - Création et gestion des marketplaces

1638* [Skills](/docs/fr/skills) - Détails du développement des skills

1639* [Subagents](/docs/fr/sub-agents) - Configuration et capacités des agents

1640* [Hooks](/docs/fr/hooks) - Gestion des événements et automatisation

1641* [MCP](/docs/fr/mcp) - Intégration des outils externes

1642* [Paramètres](/docs/fr/settings) - Options de configuration pour les plugins

plugins/cli-hints.md +136 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Recommander votre plugin depuis votre CLI

6 

7> Invitez les utilisateurs de Claude Code à installer votre plugin de la marketplace officielle en émettant une balise claude-code-hint depuis votre CLI ou SDK.

8 

9Si vous maintenez une CLI ou un SDK, votre outil peut inviter les utilisateurs de Claude Code à installer votre plugin. Lorsque votre CLI détecte qu'elle s'exécute dans Claude Code, faites-la écrire une balise `<claude-code-hint />` sur une seule ligne vers stderr. Claude Code supprime la ligne de la sortie des outils Bash et PowerShell avant que le modèle ne voie la sortie, puis affiche à l'utilisateur une invite d'installation unique.

10 

11Cette page s'applique uniquement si votre plugin est répertorié dans `claude-plugins-official` ou une autre marketplace avec l'un des [noms de marketplace officiels d'Anthropic](/docs/fr/plugins/security#official-marketplace-names). La marketplace communautaire, `claude-community`, n'en fait pas partie.

12 

13<Note>

14 Pour publier un plugin, consultez [Publier et distribuer un plugin](/docs/fr/plugins/publish).

15</Note>

16 

17<h2 id="emit-the-hint">

18 Émettre l'indice

19</h2>

20 

21Émettez la balise uniquement lorsque `CLAUDECODE` ou `CLAUDE_CODE_CHILD_SESSION` est défini, afin qu'elle n'apparaisse pas lorsqu'une personne exécute votre CLI directement.

22 

23Claude Code définit `CLAUDECODE=1` dans les commandes qu'il exécute via les outils Bash et PowerShell et dans les commandes hook. À partir de la v2.1.172, il définit également `CLAUDE_CODE_CHILD_SESSION=1` là-bas. Les variables diffèrent dans les processus qui les portent :

24 

25* **`CLAUDECODE`** : défini par chaque version de Claude Code. Les extensions IDE le définissent également dans leurs terminaux intégrés, donc une vérification sur `CLAUDECODE` seul émet également la balise lorsqu'une personne exécute votre CLI elle-même dans l'un de ces terminaux

26* **`CLAUDE_CODE_CHILD_SESSION`** : défini uniquement dans les sous-processus que Claude Code lui-même démarre. Utilisez-le lorsque vous pouvez exiger la v2.1.172 ou une version ultérieure

27 

28La [référence des variables d'environnement](/docs/fr/env-vars) contient les détails.

29 

30Les exemples suivants vérifient `CLAUDECODE` pour la portée la plus large et émettent un indice pour un plugin nommé `example-cli` dans la marketplace officielle :

31 

32<CodeGroup>

33 ```javascript Node.js theme={null}

34 if (process.env.CLAUDECODE) {

35 process.stderr.write(

36 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />\n',

37 )

38 }

39 ```

40 

41 ```python Python theme={null}

42 import os, sys

43 

44 if os.environ.get("CLAUDECODE"):

45 print(

46 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />',

47 file=sys.stderr,

48 )

49 ```

50 

51 ```go Go theme={null}

52 if os.Getenv("CLAUDECODE") != "" {

53 fmt.Fprintln(os.Stderr,

54 `<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />`)

55 }

56 ```

57 

58 ```shell Shell theme={null}

59 if [ -n "$CLAUDECODE" ]; then

60 printf '%s\n' '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />' >&2

61 fi

62 ```

63</CodeGroup>

64 

65Remplacez `example-cli` par le nom de votre plugin dans la marketplace officielle.

66 

67Vous pouvez émettre l'indice à chaque invocation, car Claude Code demande une fois pour chaque plugin.

68 

69Pour vérifier l'émetteur, exécutez `CLAUDECODE=1 example-cli` dans un terminal et confirmez que la ligne de balise apparaît sur stderr, puis exécutez `example-cli` sans la variable et confirmez que rien d'extra ne s'affiche.

70 

71<h2 id="hint-format">

72 Format de l'indice

73</h2>

74 

75La balise doit occuper sa propre ligne ; Claude Code ignore une balise intégrée au milieu d'une ligne.

76 

77La balise prend trois attributs, tous obligatoires :

78 

79| Attribut | Description |

80| :------- | :------------------------------------------------------------ |

81| `v` | Version du protocole. `1` est la seule valeur prise en charge |

82| `type` | Type d'indice. `plugin` est la seule valeur prise en charge |

83| `value` | Identifiant du plugin sous la forme `name@marketplace` |

84 

85Les valeurs peuvent être entre guillemets doubles ou sans guillemets ; une valeur sans guillemets ne peut pas contenir d'espaces.

86 

87Claude Code supprime la ligne de la sortie même lorsque `v` ou `type` n'est pas reconnu.

88 

89<h2 id="check-when-the-prompt-appears">

90 Vérifier quand l'invite apparaît

91</h2>

92 

93L'invite n'apparaît que dans les sessions de terminal interactives. Dans les exécutions `claude -p`, dans les exécutions de sous-agent et dans la sortie des commandes hook, la balise est supprimée et aucune invite n'est affichée. Toutes ces vérifications doivent également réussir :

94 

95* **Officiel et installable** : `value` nomme un plugin que Claude Code trouve dans sa copie locale d'une marketplace officielle, qui n'est pas déjà installé, et qu'aucune politique ne bloque

96* **Analytics activé** : une session où les analytics de Claude Code sont désactivés ne demande jamais, par exemple une avec `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` défini, ou une sur un fournisseur tiers tel qu'Amazon Bedrock, où la [désactivation automatique de la télémétrie](/docs/fr/data-usage#default-behaviors-by-api-provider) s'applique

97* **Limites de fréquence** : une invite par session, une invite au total par plugin indépendamment de la réponse de l'utilisateur, et aucune une fois que 100 plugins ont été demandés sur cette machine

98* **Non désactivé** : l'utilisateur n'a pas choisi **Non, et ne plus afficher les conseils d'installation de plugins**

99* **Session locale et assistée** : l'espace de travail de la session est local plutôt que sur une machine cloud ou distante, et la session n'est pas exécutée sans surveillance. Par exemple, une session démarrée avec `--cloud`, une servant Remote Control, ou un coéquipier d'une équipe d'agents ne demande jamais

100 

101<h2 id="preview-what-the-user-sees">

102 Aperçu de ce que l'utilisateur voit

103</h2>

104 

105Lorsque les vérifications dans [Vérifier quand l'invite apparaît](#check-when-the-prompt-appears) réussissent, Claude Code affiche une boîte de dialogue **Recommandation de plugin** comme suit :

106 

107```text theme={null}

108─────────────────────────────────────────────────────────────

109 Recommandation de plugin

110 

111 La commande example-cli suggère d'installer un plugin.

112 

113 Plugin : example-cli

114 Marketplace : claude-plugins-official

115 Description : Intégration officielle pour les déploiements example-cli

116 

117 Voulez-vous l'installer ?

118 ❯ 1. Oui, installer

119 2. Non

120 3. Non, et ne plus afficher les conseils d'installation de plugins

121 

122─────────────────────────────────────────────────────────────

123```

124 

125La boîte de dialogue nomme le premier mot de la commande shell que Claude a exécutée, afin que les utilisateurs puissent détecter une discordance. Chaque réponse a un effet :

126 

127* **Oui, installer** : installe le plugin au [niveau utilisateur](/docs/fr/plugins/install)

128* **Non, et ne plus afficher les conseils d'installation de plugins** : désactive les futures invites d'indice pour cet utilisateur

129* **Pas de réponse pendant 30 secondes** : compte comme **Non**

130 

131<h2 id="next-steps">

132 Étapes suivantes

133</h2>

134 

135* [Publier et distribuer un plugin](/docs/fr/plugins/publish) : les routes dans chaque marketplace, y compris la marketplace officielle, que l'indice nécessite

136* [Référence des commandes de plugin](/docs/fr/plugins/cli-reference#plugin-install) : la commande shell qui installe le même plugin en dehors d'une session

plugins/cli-reference.md +843 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Référence des commandes de plugin

6 

7> Référence complète des commandes shell de plugin Claude, /plugin et /reload-plugins dans une session, et les drapeaux qui chargent un plugin pour une seule session.

8 

9Vous exécutez les commandes de plugin soit en tant que `claude plugin` depuis votre shell ou un script, soit en tant que `/plugin` et `/reload-plugins` dans une session Claude Code. Cette référence donne les drapeaux, les valeurs par défaut, la sortie et les codes de sortie de chaque commande, ainsi que les deux drapeaux qui chargent un plugin pour une seule session.

10 

11Exécutez `claude plugin --help` sur votre build pour confirmer quels sous-commandes votre version possède.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Installer et gérer les étapes, et où `/plugin` s'exécute** : voir [Installer et gérer les plugins](/docs/fr/plugins/install)

17 * **Ce qu'une commande change sur le disque et quelle portée prend la priorité** : voir [Référence du chargement des plugins](/docs/fr/plugins/loading)

18 * **Ce qu'un message d'erreur signifie** : voir [Dépanner les plugins](/docs/fr/plugins/troubleshooting)

19</Note>

20 

21<h2 id="claude-plugin-commands">

22 Commandes claude plugin

23</h2>

24 

25Exécutez `claude plugin <subcommand>` depuis votre shell ou un script, en dehors d'une session Claude Code. Ces sous-commandes installent et gèrent les plugins sans ouvrir le panneau [`/plugin`](#plugin-in-a-session).

26 

27`claude plugins` est un alias pour `claude plugin`.

28 

29Chaque sous-commande partage ces codes de sortie, arguments de plugin et valeurs de portée :

30 

31* **Codes de sortie** : `0` en cas de succès et `1` en cas d'échec. `validate` ajoute la sortie `2` pour une erreur inattendue, et `eval` ajoute les codes listés dans [sa section](#plugin-eval).

32* **Arguments de plugin** : un argument `<plugin>` est un `name` de plugin ou `name@marketplace`. Quand deux marketplaces offrent le même nom, utilisez la forme qualifiée.

33* **Portées** : `--scope` prend `user`, `project`, ou `local`, et nomme le fichier de paramètres que la commande écrit. `update` prend aussi `managed`.

34 

35<h3 id="plugin-init">

36 plugin init

37</h3>

38 

39Créez un nouveau plugin à `~/.claude/skills/<name>/`. Il se charge dans votre prochaine session en tant que `<name>@skills-dir` sans étape d'installation.

40 

41`new` est un alias pour `init`.

42 

43Pour le flux de travail créer, tester et éditer qui commence par cette commande, voir [Créer un plugin](/docs/fr/plugins/create).

44 

45```bash theme={null}

46claude plugin init <name> [options]

47```

48 

49`<name>` devient le nom du répertoire sous `~/.claude/skills/` et le `name` du plugin dans son manifeste.

50 

51La commande n'a pas de drapeau pour un autre emplacement. Pour créer un scaffold dans un projet à la place, voir [Créer un plugin](/docs/fr/plugins/create).

52 

53| Drapeau | Description |

54| :----------------------- | :----------------------------------------------------------------------------------------------------------------- |

55| `--description <text>` | Description du manifeste |

56| `--author <name>` | Nom de l'auteur. Par défaut `git config user.name` |

57| `--author-email <email>` | Email de l'auteur. Par défaut `git config user.email` |

58| `--with <components...>` | Créez aussi des fichiers de démarrage pour `skills`, `agents`, `hooks`, `mcp`, `lsp`, `output-style`, ou `channel` |

59| `-f, --force` | Écrasez un `.claude-plugin/` existant à la cible |

60 

61Créez un plugin avec des fichiers de skill et hook de démarrage :

62 

63```bash theme={null}

64claude plugin init my-helper --with skills hooks

65```

66 

67Claude Code valide ce qu'il a écrit et affiche `Created plugin "my-helper" at ~/.claude/skills/my-helper`, suivi de l'id qu'il charge et de la commande `claude plugin disable` qui l'éteint.

68 

69Claude Code quitte avec `1` sans écrire quand il ne peut pas créer le scaffold en toute sécurité, et le message nomme la raison. Voici les raisons courantes :

70 

71* Une valeur `--with` inconnue

72* Un scaffold existant à la cible sans `--force`

73* Un paramètre géré qui bloque les plugins du répertoire de skills

74 

75<h3 id="plugin-install">

76 plugin install

77</h3>

78 

79Installez un plugin depuis une marketplace que vous avez ajoutée. `i` est un alias pour `install`.

80 

81```bash theme={null}

82claude plugin install <plugin> [options]

83```

84 

85La plupart des plugins s'installent sans invite. Pour un plugin dont l'entrée marketplace [exécute une commande pour l'installer](/docs/fr/plugins/host-marketplace) ou [définit un `headersHelper` pour son téléchargement](/docs/fr/plugins/host-marketplace#how-users-accept-a-headershelper-command), Claude Code affiche d'abord la commande et demande `Run this command now? [y/N]`.

86 

87| Drapeau | Description |

88| :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

89| `-s, --scope <scope>` | Portée d'installation : `user`, `project`, ou `local`. Par défaut `user` |

90| `--config <key=value>` | Définissez une option [`userConfig`](/docs/fr/plugins/manifest-reference) que le manifeste du plugin déclare. Répétez le drapeau pour chaque option. Nécessite Claude Code v2.1.147 ou ultérieur |

91| `-y, --yes` | Acceptez la commande d'installation affichée sans l'invite `Run this command now?`. Ignoré quand la commande s'exécute dans une session Claude Code, comme depuis l'outil Bash ou un hook. Nécessite Claude Code v2.1.229 ou ultérieur |

92| `--accept-command <sha256>` | Acceptez la commande d'installation affichée dont le `sha256` une exécution [`--json` précédente](#plugin-json-result) a rapporté dans `shownCommand`, à la place de `-y`. Ne peut pas être combiné avec `-y`. Voir [Accepter une commande d'installation affichée](#accept-a-displayed-install-command). Nécessite Claude Code v2.1.271 ou ultérieur |

93| `--json` | Affiche le résultat en tant qu'un objet JSON sur la dernière ligne de stdout au lieu du message lisible par l'homme, pour utilisation dans les scripts. Voir [Format de résultat JSON](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur |

94 

95Passez `-y` depuis votre propre terminal pour accepter la commande affichée sans l'invite. Voici ce qui se passe sans TTY et quand Claude exécute la commande :

96 

97* **stdin ou stdout n'est pas un TTY, et vous ne passez ni `-y` ni `--accept-command`** : l'installation est refusée. La sortie dit que la commande a été seulement affichée, et le code de sortie est `1`

98* **Claude exécute la commande via son outil Bash** : `-y` est ignoré. Exécutez la commande depuis votre propre terminal à la place

99 

100Installez un plugin pour tous ceux qui clonent le projet :

101 

102```bash theme={null}

103claude plugin install formatter@my-marketplace --scope project

104```

105 

106Claude Code affiche `Successfully installed plugin: formatter@my-marketplace (scope: project)`. Quand rien de nouveau n'est installé, la sortie dit pourquoi :

107 

108* **Déjà installé à cette portée** : la sortie est `Plugin "formatter@my-marketplace" is already installed (scope: project)` et le code de sortie est `0`

109* **Vous refusez une invite de source de commande** : la sortie est `Aborted.` et le code de sortie est `1`

110* **Vous refusez une invite `headersHelper`, ou elle ne peut pas être confirmée sans TTY** : la sortie est `Aborted — the command was not run.` et le code de sortie est `1`

111 

112<h4 id="plugin-json-result">

113 Format de résultat JSON

114</h4>

115 

116Quand vous passez `--json` à `plugin install`, la dernière ligne de stdout est un objet JSON. Analysez seulement cette ligne, car Claude Code affiche toute commande que la marketplace déclare avant elle.

117 

118Trois champs sont toujours présents :

119 

120* `command` : la sous-commande qui a été exécutée, comme `install`

121* `outcome` : `ok` ou `failed`

122* `message` : une description lisible par l'homme du résultat

123 

124D'autres champs, comme `pluginId`, `scope`, et `failureCode`, apparaissent seulement quand ils s'appliquent.

125 

126L'option `--json` sur `plugin uninstall`, `plugin update`, `plugin enable`, et `plugin disable` affiche le même objet avec les champs propres à cette sous-commande.

127 

128Une erreur d'utilisation, comme un `--scope` invalide, n'affiche aucune ligne de résultat et quitte `1` avec la raison sur stderr.

129 

130<h4 id="accept-a-displayed-install-command">

131 Accepter une commande d'installation affichée

132</h4>

133 

134Quand une exécution `--json` affiche une commande déclarée par la marketplace et ne l'exécute pas, le résultat `failed` porte aussi un objet `shownCommand`. Ses champs incluent la commande telle qu'affichée, le plugin auquel elle appartient, et le `sha256` de la commande.

135 

136Pour accepter exactement cette commande, réexécutez avec ce `sha256` en tant que `--accept-command` depuis votre propre terminal, car le drapeau n'a aucun effet dans une session Claude Code. Nécessite Claude Code v2.1.271 ou ultérieur.

137 

138Le `sha256` compte comme acceptation pour exactement cette commande, ce plugin, et ce catalogue de marketplace. Si l'un d'eux a changé depuis que la commande a été affichée, Claude Code n'accepte pas le `sha256` et affiche la commande à nouveau. Un changement que l'actualisation de la marketplace de la propre exécution récupère compte aussi comme tel changement.

139 

140Si `shownCommand.acceptCommandMatched` est `false`, le `sha256` que vous avez passé ne correspond pas à la commande maintenant affichée. Examinez cette commande avant de réexécuter avec son `sha256`.

141 

142<h3 id="plugin-uninstall">

143 plugin uninstall

144</h3>

145 

146Supprimez un plugin installé d'une portée. `remove` et `rm` sont des alias pour `uninstall`.

147 

148```bash theme={null}

149claude plugin uninstall <plugin> [options]

150```

151 

152| Drapeau | Description |

153| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

154| `-s, --scope <scope>` | Désinstallez de la portée : `user`, `project`, ou `local`. Par défaut `user` |

155| `--keep-data` | Préservez le répertoire de données persistantes du plugin, `~/.claude/plugins/data/<id>/` |

156| `--prune` | Supprimez aussi les [dépendances](/docs/fr/plugins/dependencies) auto-installées que nul plugin restant n'a besoin |

157| `-y, --yes` | Ignorez l'invite de confirmation `--prune`. Requis avec `--prune` quand stdin ou stdout n'est pas un TTY |

158| `--json` | Affiche le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, dans le [même format que `plugin install --json`](#plugin-json-result). Ne peut pas être combiné avec `--prune`. Nécessite Claude Code v2.1.268 ou ultérieur |

159 

160Désinstallez un plugin de la portée du projet :

161 

162```bash theme={null}

163claude plugin uninstall formatter@my-marketplace --scope project

164```

165 

166Claude Code affiche `Successfully uninstalled plugin: formatter (scope: project)`. Quand le plugin n'est pas installé à cette portée, la commande affiche une ligne qui commence par `Failed to uninstall plugin "formatter@my-marketplace":` et quitte `1`.

167 

168<h3 id="plugin-enable">

169 plugin enable

170</h3>

171 

172Activez un plugin désactivé. Pour un [plugin synchronisé depuis claude.ai](/docs/fr/plugins/loading#synced-plugins), passez `<name>@synced` en tant que plugin.

173 

174```bash theme={null}

175claude plugin enable <plugin> [options]

176```

177 

178| Drapeau | Description |

179| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

180| `-s, --scope <scope>` | Portée pour activer : `user`, `project`, ou `local`. Auto-détecté quand omis |

181| `--json` | Affiche le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, dans le [même format que `plugin install --json`](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur |

182 

183Sans `--scope`, la commande vérifie vos fichiers de paramètres dans l'ordre local, projet, utilisateur, et utilise la première portée qui mentionne le plugin.

184 

185Si vous passez un `--scope` où le plugin n'est pas déclaré, la commande écrit soit une substitution soit échoue :

186 

187* **Une portée qui [prend la priorité](/docs/fr/plugins/loading) sur celle qui le déclare** : Claude Code écrit une substitution à la portée que vous avez passée. Par exemple, `claude plugin disable formatter --scope local` éteint un plugin activé au niveau du projet pour vous seul

188* **Toute autre portée** : la commande échoue avec `Plugin "formatter" is installed at project scope, not user. Use --scope project or omit --scope to auto-detect.`

189 

190Si le plugin est déjà activé à la portée résolue, la commande affiche `Plugin "formatter" is already enabled` et quitte `1`. Avec `--json`, le résultat a `"failureCode": "already_in_goal_state"` et `"alreadyInGoalState": true`, donc un script peut traiter ce cas comme un succès.

191 

192Quand le plugin déclare des [dépendances](/docs/fr/plugins/dependencies), Claude Code les active aussi. La commande échoue dans ces cas :

193 

194* **Une dépendance n'est pas installée** : l'activation échoue et affiche la commande `claude plugin install` pour chaque dépendance manquante

195* **Une dépendance est bloquée par la politique de plugin de votre organisation** : l'activation échoue et nomme la dépendance bloquée

196* **Une dépendance est définie à `false` à une portée avec une priorité plus élevée que la portée cible** : l'activation échoue. Activez la dépendance à cette portée, ou passez `--scope` pour écrire là

197 

198Réactivez un plugin où qu'il soit déclaré :

199 

200```bash theme={null}

201claude plugin enable formatter

202```

203 

204Claude Code affiche `Successfully enabled plugin: formatter (scope: project)`, nommant la portée qu'il a détectée.

205 

206<h3 id="plugin-disable">

207 plugin disable

208</h3>

209 

210Désactivez un plugin sans le désinstaller. Pour un [plugin synchronisé depuis claude.ai](/docs/fr/plugins/loading#synced-plugins), passez `<name>@synced` en tant que plugin.

211 

212```bash theme={null}

213claude plugin disable [plugin] [options]

214```

215 

216| Drapeau | Description |

217| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

218| `-a, --all` | Désactivez tous les plugins activés. Ne peut pas être combiné avec un nom de plugin ou `--scope` |

219| `-s, --scope <scope>` | Portée pour désactiver : `user`, `project`, ou `local`. Auto-détecté quand omis |

220| `--json` | Affiche le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, dans le [même format que `plugin install --json`](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur |

221 

222Sans `--scope`, la portée est auto-détectée dans le même ordre local, projet, utilisateur que [`plugin enable`](#plugin-enable).

223 

224Si vous ne passez ni un nom de plugin ni `--all`, Claude Code affiche `Please specify a plugin name or use --all to disable all plugins` et quitte `1`. Désactiver un plugin qui est déjà désactivé affiche `Plugin "formatter" is already disabled` et quitte `1`, comme [`plugin enable`](#plugin-enable) le fait pour un plugin déjà activé.

225 

226La commande échoue pour un plugin qui est toujours requis :

227 

228* **Un autre plugin activé [en dépend](/docs/fr/plugins/dependencies)** : la commande échoue et nomme les dépendants à désactiver d'abord

229* **Votre organisation l'exige en tant que plugin synchronisé** : la commande échoue et ne sauvegarde rien

230 

231Désactivez un plugin :

232 

233```bash theme={null}

234claude plugin disable formatter

235```

236 

237Claude Code affiche `Successfully disabled plugin: formatter (scope: project)`.

238 

239<h3 id="plugin-update">

240 plugin update

241</h3>

242 

243Mettez à jour un plugin à la dernière version que sa marketplace offre. La nouvelle version se charge dans votre prochaine session, ou après que vous exécutiez `/reload-plugins` dans une session en cours.

244 

245```bash theme={null}

246claude plugin update <plugin> [options]

247```

248 

249| Drapeau | Description |

250| :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

251| `-s, --scope <scope>` | Portée à mettre à jour : `user`, `project`, `local`, ou `managed`. Par défaut la portée où le plugin est installé |

252| `-y, --yes` | Acceptez une commande d'installation modifiée d'un plugin [source de commande](/docs/fr/plugins/host-marketplace), sans l'invite. Requis quand stdin ou stdout n'est pas un TTY, sauf si vous passez `--accept-command`. Nécessite Claude Code v2.1.229 ou ultérieur |

253| `--accept-command <sha256>` | Acceptez la commande déclarée par la marketplace dont le `sha256` une exécution [`--json` précédente](#plugin-json-result) a rapporté dans `shownCommand`, à la place de `-y`. Ne peut pas être combiné avec `-y`. Nécessite Claude Code v2.1.271 ou ultérieur |

254| `--json` | Affiche le résultat en tant qu'un objet JSON sur la dernière ligne de stdout, dans le [même format que `plugin install --json`](#plugin-json-result). Nécessite Claude Code v2.1.268 ou ultérieur |

255 

256`managed` est la seule portée que vous pouvez mettre à jour mais pas installer. Pour les plugins installés par l'administrateur, voir [Gérer les plugins pour votre organisation](/docs/fr/plugins/org).

257 

258Mettez à jour un plugin :

259 

260```bash theme={null}

261claude plugin update formatter@my-marketplace

262```

263 

264Claude Code affiche `Checking for updates for plugin "formatter@my-marketplace"…`, puis le résultat. Quand rien n'est plus récent, il affiche `formatter is already at the latest version (1.0.0).` et quitte `0`.

265 

266Vous pouvez passer un nom de plugin nu, que la commande correspond à vos plugins installés. Quand les plugins installés de différentes marketplaces partagent le nom, la commande refuse la mise à jour et liste les commandes `plugin-name@marketplace-name` qualifiées à exécuter à la place. La mise à jour par nom nu nécessite Claude Code v2.1.246 ou ultérieur.

267 

268<h3 id="plugin-list">

269 plugin list

270</h3>

271 

272Listez les plugins installés avec leur version, portée et statut.

273 

274```bash theme={null}

275claude plugin list [options]

276```

277 

278| Drapeau | Description |

279| :------------ | :----------------------------------------------------------------------------------------------------------------- |

280| `--json` | Affiche la liste en JSON |

281| `--available` | Listez aussi les plugins que vos marketplaces offrent que vous n'avez pas installés. N'a aucun effet sans `--json` |

282 

283Claude Code groupe la sortie lisible par l'homme par comment chaque plugin se charge :

284 

285* **`Installed plugins:`** : plugins que vous avez installés depuis une marketplace

286* **`Session-only plugins (--plugin-dir / --plugin-url):`** : plugins chargés par ces drapeaux dans la même commande, comme dans `claude --plugin-dir ./my-plugin plugin list`

287* **`Skills-directory plugins (.claude/skills/*):`** : plugins que Claude Code a trouvés dans un répertoire de skills

288* **`Synced from claude.ai`** : [plugins synchronisés depuis votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins)

289 

290Sans rien dans aucun groupe, Claude Code affiche ``No plugins installed. Use `claude plugin install` to install a plugin.``

291 

292<h4 id="json-output">

293 Sortie JSON

294</h4>

295 

296Avec `--json`, Claude Code affiche un tableau avec un objet par installation. Chaque objet porte les champs ci-dessous. `id`, `version`, `scope`, `enabled`, et `installPath` sont toujours présents, et les autres apparaissent seulement quand ils s'appliquent.

297 

298| Champ | Type | Description |

299| :------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

300| `id` | string | `name@marketplace` pour les installations, `name@inline` pour les plugins de session seulement, `name@skills-dir` pour les plugins du répertoire de skills, `name@synced` pour les plugins synchronisés depuis claude.ai |

301| `version` | string | Pour une installation de marketplace, la [version que Claude Code a calculée](/docs/fr/plugins/loading#versions-and-updates) à l'installation. Pour un plugin de session seulement, du répertoire de skills, ou synchronisé, la `version` du manifeste, ou `unknown` quand il n'en déclare aucune |

302| `scope` | string | `user`, `project`, `local`, ou `managed` pour les installations ; `user` ou `project` pour les plugins du répertoire de skills ; `session` pour les plugins de session seulement ; `synced` pour les plugins synchronisés depuis claude.ai |

303| `enabled` | boolean | Si le plugin est activé dans vos paramètres fusionnés |

304| `installPath` | string | Répertoire d'où le plugin se charge |

305| `installedAt` | string | Timestamp ISO de l'installation. Installations de marketplace seulement |

306| `lastUpdated` | string | Timestamp ISO de la dernière mise à jour. Installations de marketplace seulement |

307| `projectPath` | string | Projet auquel l'installation appartient. Portée `project` et `local` seulement |

308| `mcpServers` | object | Les définitions de serveur MCP du plugin, quand un plugin installé de marketplace en a |

309| `errors` | array of strings | Erreurs de chargement, quand le plugin n'a pas pu se charger |

310| `notes` | array of strings | Avertissements de création pour un plugin qui s'est chargé et fonctionne |

311| `errorDetails` | array of objects | Un objet par entrée `errors`, donnant son `type` de diagnostic et les noms auxquels il se réfère, comme le plugin, la marketplace, le serveur, ou le fichier. Nécessite Claude Code v2.1.268 ou ultérieur |

312| `noteDetails` | array of objects | Les mêmes objets de détail pour chaque entrée `notes`. Nécessite Claude Code v2.1.268 ou ultérieur |

313 

314Avec `--json --available`, Claude Code affiche un objet au lieu d'un tableau. Son champ `installed` contient le tableau d'objets de plugin installé, et son champ `available` contient un objet par plugin de marketplace non installé avec les champs ci-dessous.

315 

316| Champ | Type | Description |

317| :---------------- | :--------------- | :---------------------------------------------------------------------------------------------------------------------------- |

318| `pluginId` | string | `name@marketplace` |

319| `name` | string | Le nom du plugin dans la marketplace |

320| `marketplaceName` | string | La marketplace qui l'offre |

321| `source` | string or object | La [source](/docs/fr/plugins/marketplace-reference) de l'entrée de marketplace : une string pour un chemin relatif, un objet sinon |

322| `description` | string | La description de l'entrée, quand elle en a une |

323| `version` | string | La version de l'entrée, quand elle en déclare une |

324| `installCount` | number | Nombre d'installations, quand Claude Code en a un pour le plugin |

325 

326<h3 id="plugin-details">

327 plugin details

328</h3>

329 

330Montrez l'inventaire des composants d'un plugin et son coût de token projeté.

331 

332Le plugin doit être chargé : installé, trouvé dans un répertoire de skills, ou passé avec `--plugin-dir` ou `--plugin-url` dans la même commande. Le `<name>` est un `name` de plugin ou `name@marketplace`.

333 

334```bash theme={null}

335claude plugin details <name>

336```

337 

338La commande ne prend aucun drapeau au-delà de `--help`.

339 

340Montrez ce qu'un plugin installé contribue :

341 

342```bash theme={null}

343claude plugin details formatter

344```

345 

346Claude Code affiche le nom, la version, la description et la source du plugin, puis ces sections :

347 

348* **`Component inventory`** : les skills, agents, hooks, serveurs MCP et serveurs LSP du plugin

349* **`Projected token cost`** : les tokens toujours actifs que le plugin ajoute à chaque session

350* **`Per-component (rounded)`** : estimations toujours actives et à l'invocation pour chaque skill, agent et commande. Omis quand le plugin n'en a aucun

351 

352Pour ce que les deux chiffres de coût signifient, voir [Mesurer le coût et l'utilisation des plugins](/docs/fr/plugins/measure).

353 

354Pour un plugin qui n'est pas chargé, Claude Code affiche ``Plugin "formatter" not found. Run `claude plugin list` to see installed plugins, or pass --plugin-dir <path> to load one from disk.`` et quitte `1`.

355 

356<h3 id="plugin-prune">

357 plugin prune

358</h3>

359 

360Supprimez les [dépendances](/docs/fr/plugins/dependencies) auto-installées que nul plugin installé n'a plus besoin. La commande ne supprime jamais un plugin que vous avez installé vous-même. `autoremove` est un alias pour `prune`.

361 

362```bash theme={null}

363claude plugin prune [options]

364```

365 

366| Drapeau | Description |

367| :-------------------- | :------------------------------------------------------------------------------ |

368| `-s, --scope <scope>` | Élaguer à la portée : `user`, `project`, ou `local`. Par défaut `user` |

369| `--dry-run` | Listez ce qui serait supprimé sans le supprimer |

370| `-y, --yes` | Ignorez l'invite de confirmation. Requis quand stdin ou stdout n'est pas un TTY |

371 

372Prévisualisez ce qu'un élagage supprimerait :

373 

374```bash theme={null}

375claude plugin prune --dry-run

376```

377 

378Claude Code liste les dépendances orphelines et se termine par `(dry run — nothing removed)`. Sans rien à élaguer, il affiche une ligne qui commence par `Nothing to prune`.

379 

380Sans `--dry-run`, la commande supprime les dépendances orphelines seulement après que vous confirmiez à l'invite ou passiez `-y`.

381 

382Le code de sortie est `0` quelle que soit votre réponse à l'invite.

383 

384Ce que `prune` fait dépend de si un terminal est attaché et si vous passez `-y`:

385 

386| Terminal et drapeaux | Ce qui se passe |

387| :----------------------------------- | :---------------------------------------------------------------------------------------------- |

388| Terminal interactif, pas de `-y` | Liste les dépendances orphelines et demande `Remove? [y/N]` |

389| N'importe quel terminal, `-y` | Les supprime et affiche `Removed N auto-installed plugins: <names>` |

390| stdin ou stdout non-TTY, pas de `-y` | Affiche la liste et ``Not a TTY — run `claude plugin prune -y` to remove.``, ne supprimant rien |

391 

392<h3 id="plugin-eval">

393 plugin eval

394</h3>

395 

396Exécutez les [cas d'évaluation](/docs/fr/plugin-evals) d'un plugin et rapportez les résultats notés. Nécessite Claude Code v2.1.269 ou ultérieur.

397 

398Chaque cas est une invite plus des évaluateurs. Claude Code l'exécute plusieurs fois dans une session isolée avec seulement le plugin cible chargé, et par défaut aussi sans le plugin pour que le rapport montre la différence.

399 

400Voir [Tester les plugins avec des évaluations](/docs/fr/plugin-evals) pour le format des cas, les évaluateurs, les résultats et l'utilisation CI.

401 

402```bash theme={null}

403claude plugin eval [target] [options]

404```

405 

406La `target` optionnelle par défaut au répertoire courant et prend n'importe laquelle de ces formes :

407 

408* Un répertoire de plugin

409* Un seul fichier `prompt.md` ou `case.yaml`

410* Un plugin installé en tant que `name` ou `name@marketplace`

411* `name@skills-dir`

412 

413Mettez la cible avant `--tag`, `--allow-tools`, et `--json`. Chacune de ces options prend les mots qui la suivent comme sa valeur, donc une cible écrite après l'une d'elles est lue comme une balise, un nom d'outil, ou le chemin de sortie JSON au lieu de la cible.

414 

415Ce tableau liste les options que la plupart des exécutions utilisent. Exécutez `claude plugin eval --help` pour l'ensemble complet, incluant `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, et `--verbose`.

416 

417| Option | Description | Par défaut |

418| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------ |

419| `--runs <n>` | Exécutions par cas dans chaque [bras](/docs/fr/plugin-evals#compare-against-a-no-plugin-baseline) | La `runs` de chaque cas, sinon 3 |

420| `-j, --concurrency <n>` | Sessions d'agent à exécuter à la fois, 1 à 8. Elles partagent votre limite de débit | `1` |

421| `--model <model>` | Modèle pour l'agent testé | La `model` de chaque cas, sinon `ANTHROPIC_MODEL` s'il est défini, sinon le défaut de Claude Code |

422| `--judge-model <model>` | Modèle pour les évaluateurs `llm` et `baseline` | Un petit modèle rapide |

423| `--ablation <mode>` | `none` ou `with-without`. Voir [Comparer à une ligne de base sans plugin](/docs/fr/plugin-evals#compare-against-a-no-plugin-baseline) | `with-without` quand un plugin se résout, sinon `none` |

424| `--threshold <0..1>` | Quittez 1 si un cas note en dessous de ceci | `1.0` |

425| `--max-cost-usd <usd>` | Arrêtez avant la prochaine exécution une fois que les dépenses atteignent ceci, quittez 2, et rapportez les résultats partiels | Pas de limite |

426| `--allow-tools <tools...>` | Accordez des outils au-delà de l'ensemble en lecture seule, comme `Bash`, `Write`, `Edit`, ou `"mcp__plugin_<plugin>_<server>__*"`. Voir [Accorder des outils](/docs/fr/plugin-evals#grant-tools) | |

427| `--scaffold` | Exécutez le [`scaffold_script`](/docs/fr/plugin-evals#add-setup-or-history-with-case-yaml) de chaque cas | Désactivé |

428| `--trust-plugin` | Ignorez l'invite de confiance à la première exécution, pour CI. Voir [Ce qu'une exécution peut accéder](/docs/fr/plugin-evals#security) | Désactivé |

429| `--mocks <mode>` | `record` ou `off`. Voir [Serveurs MCP fictifs](/docs/fr/plugin-evals#mock-mcp-servers) | `record` |

430| `--eval-dir <dir>` | Répertoire sous le plugin qui contient les cas | La `experimental.evals` du manifeste, sinon `evals` |

431| `--json [path]` | Affiche le [document de résultat](/docs/fr/plugin-evals#json-result) sur stdout, ou écrivez-le à un chemin `.json` | |

432| `--no-publish` | Gardez le rapport HTML local | |

433 

434Le code de sortie rapporte comment l'exécution s'est terminée. Pour agir dessus dans un pipeline, voir [Exécuter les évaluations en CI](/docs/fr/plugin-evals#run-evals-in-ci).

435 

436| Code de sortie | Signification |

437| :------------- | :----------------------------------------------------------------------------------- |

438| `0` | Chaque cas respecte le seuil |

439| `1` | Un cas défaillant, une erreur de chargement, ou un répertoire de plugin non approuvé |

440| `2` | Une exécution partielle |

441| `130` | Interrompu |

442| `143` | Terminé |

443 

444<h3 id="plugin-eval-init">

445 plugin eval init

446</h3>

447 

448Créez une suite d'évaluation pour le plugin dans le répertoire courant. Nécessite Claude Code v2.1.269 ou ultérieur. Voir [Créer votre première suite d'évaluation](/docs/fr/plugin-evals#create-your-first-eval-suite).

449 

450```bash theme={null}

451claude plugin eval init [name] [options]

452```

453 

454Dans un terminal, la commande ouvre une session Claude Code interactive pour une interview de création. Dans l'interview, Claude fait ce qui suit :

455 

4561. Lit le plugin

4572. Vous demande ce qu'il devrait bien faire

4583. Propose des cas et des évaluateurs

4594. Écrit les fichiers de cas

4605. Exécute les cas et examine les notes avec vous pour vérifier que les évaluateurs notent comme vous le feriez

461 

462Avec `--bare`, ou sans terminal, la commande écrit un modèle de cas unique vierge à la place. Quand Claude exécute la commande depuis l'intérieur d'une session Claude Code, la commande affiche les instructions d'interview pour que cette session suive plutôt que d'écrire un modèle.

463 

464Le `name` optionnel est un nom de cas. Il est requis avec `--bare` ou sans terminal, car la commande écrit le modèle vierge pour ce cas. L'interview n'en a pas besoin.

465 

466La commande accepte ces options :

467 

468| Option | Description | Par défaut |

469| :------------------ | :--------------------------------------------------------------------------------------------------- | :-------------------------------------------------- |

470| `--bare` | Écrivez un `prompt.md` et `graders/criteria.md` vierges pour `<name>` au lieu d'exécuter l'interview | |

471| `-i, --interactive` | Exigez l'interview. Échoue sans terminal au lieu d'écrire un modèle | |

472| `--eval-dir <dir>` | Répertoire sous le répertoire courant pour écrire les cas | La `experimental.evals` du manifeste, sinon `evals` |

473 

474<h3 id="plugin-tag">

475 plugin tag

476</h3>

477 

478Créez une balise git annotée nommée `<name>--v<version>` pour une version de plugin. Avant de baliser, la commande vérifie que le `plugin.json` du plugin et toute entrée de marketplace qui le liste s'accordent sur la version.

479 

480Pour quand baliser une version, voir [Publier un plugin](/docs/fr/plugins/publish).

481 

482```bash theme={null}

483claude plugin tag [path] [options]

484```

485 

486Le `[path]` est le répertoire du plugin, par défaut le répertoire courant. La commande trouve l'entrée de marketplace en remontant de ce répertoire à un `.claude-plugin/marketplace.json` qui liste le plugin.

487 

488| Drapeau | Description |

489| :-------------------- | :---------------------------------------------------------------------------------------- |

490| `--push` | Poussez la balise vers `--remote` après l'avoir créée |

491| `--dry-run` | Affiche ce qui serait balisé sans créer la balise |

492| `-f, --force` | Ignorez les vérifications d'arbre de travail sale et de balise existante |

493| `-m, --message <msg>` | Message d'annotation de balise. `%s` représente la version. Par défaut `<name> <version>` |

494| `--remote <name>` | Distant vers lequel pousser avec `--push`. Par défaut `origin` |

495 

496Prévisualisez la balise pour un plugin dans un checkout de marketplace :

497 

498```bash theme={null}

499claude plugin tag plugins/formatter --dry-run

500```

501 

502Claude Code affiche le plan :

503 

504* Le nom du plugin

505* La version et quel fichier elle provient

506* L'entrée de marketplace correspondante, quand il y en a une

507* Le nom de la balise

508* Les commandes `git tag` et `git push` qu'il exécuterait

509 

510Sans `--dry-run`, Claude Code affiche `Created tag formatter--v1.0.0` et soit `Pushed to origin` soit la commande push à exécuter vous-même. Si la poussée échoue, la balise est toujours créée localement et la commande quitte avec une erreur.

511 

512La commande quitte `1` et affiche la raison quand elle ne peut pas baliser en toute sécurité. Les raisons courantes sont :

513 

514* Pas de `version` dans `plugin.json` ou l'entrée de marketplace

515* La balise existe déjà

516* L'arbre de travail est sale

517 

518<h3 id="plugin-validate">

519 plugin validate

520</h3>

521 

522Validez un manifeste de plugin, un manifeste de marketplace, ou les skills, agents et commandes dans un répertoire, et quittez avec un code qu'un travail CI peut utiliser. Pour le flux de travail créer, tester et éditer, voir [Créer un plugin](/docs/fr/plugins/create). Pour ce que le validateur vérifie dans chaque manifeste, voir la [référence du manifeste de plugin](/docs/fr/plugins/manifest-reference) et la [référence de marketplace](/docs/fr/plugins/marketplace-reference).

523 

524```bash theme={null}

525claude plugin validate <path> [options]

526```

527 

528| Drapeau | Description |

529| :--------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

530| `--strict` | Traitez les avertissements comme des erreurs, donc les champs non reconnus et les métadonnées manquantes que le runtime tolère échouent l'exécution. Nécessite Claude Code v2.1.145 ou ultérieur |

531| `--json` | Sortez le rapport de validation en tant qu'un objet JSON avec les mêmes codes de sortie. Nécessite Claude Code v2.1.259 ou ultérieur |

532 

533Validez un plugin avant de le valider :

534 

535```bash theme={null}

536claude plugin validate ./my-plugin --strict

537```

538 

539<h4 id="validate-a-directory">

540 Validez un répertoire

541</h4>

542 

543Le `<path>` est un fichier manifeste ou un répertoire. Donné un répertoire, Claude Code choisit ce qu'il faut valider par ce qu'il y trouve :

544 

545* `.claude-plugin/marketplace.json`, quand il existe

546* Sinon `.claude-plugin/plugin.json`

547* Sinon les fichiers de composant, choisis par le nom du répertoire. Valider les fichiers de composant sans manifeste nécessite Claude Code v2.1.233 ou ultérieur :

548 * Un répertoire nommé `skills`, `agents`, ou `commands` : les fichiers à l'intérieur

549 * Un répertoire nommé `.claude` : les répertoires `skills`, `agents`, et `commands` à l'intérieur

550 * N'importe quel autre répertoire : ces trois répertoires sous son `.claude`

551 

552Claude Code ne suit pas les liens symboliques à l'intérieur du répertoire que vous nommez. Ce qu'il fait dépend de l'endroit où le lien est :

553 

554* **Un répertoire `skills`, `agents`, ou `commands` lié sous la racine du plugin ou `.claude`** : Claude Code avertit que rien dedans n'a été lu.

555* **Une entrée liée à l'intérieur d'un répertoire `skills`, `agents`, ou `commands`** : Claude Code la saute et avertit, par répertoire, combien d'entrées il a sautées qu'une session chargerait.

556* **Le répertoire `skills`, `agents`, ou `commands` que vous nommez est lui-même un lien symbolique, ou son répertoire parent `.claude` est** : Claude Code rapporte une erreur et ne vérifie rien dedans. Nommez le répertoire réel à la place.

557 

558Quelques fichiers ne sont pas lus par une exécution de validation :

559 

560* **Un `SKILL.md` à la racine du plugin** : quand vous exécutez `claude plugin validate` contre un répertoire de plugin, Claude Code ne vérifie pas un `SKILL.md` à la racine du plugin

561* **Un `CLAUDE.md` à la racine du plugin** : dans une exécution de plugin, Claude Code avertit aussi d'un `CLAUDE.md` à la racine du plugin

562* **Fichiers de plugin dans une exécution de marketplace** : depuis un répertoire de marketplace, Claude Code n'ouvre pas les fichiers de skill, agent, commande ou hook des plugins. Pour trouver des erreurs dans ces fichiers, validez chaque répertoire de plugin

563 

564<h4 id="output-and-exit-codes">

565 Sortie et codes de sortie

566</h4>

567 

568Claude Code affiche le fichier qu'il a validé, toute erreur et avertissement avec leurs chemins, et une ligne de verdict. Le code de sortie suit le verdict :

569 

570| Code de sortie | Ligne de verdict | Signification |

571| :------------- | :------------------------------------------------------------------------------ | :--------------------------------------------------------------------- |

572| `0` | `Validation passed` ou `Validation passed with warnings` | Le manifeste se charge. Avec `--strict`, pas d'avertissements non plus |

573| `1` | `Validation failed` ou `Validation failed (--strict treats warnings as errors)` | Une erreur, ou un avertissement sous `--strict` |

574| `2` | `Unexpected error during validation: <reason>` | Le validateur lui-même a échoué, comme sur un chemin illisible |

575 

576Avec `--json`, Claude Code écrit le rapport sur stdout en tant qu'un objet JSON avec ces champs de niveau supérieur :

577 

578* `success` : le même verdict que le code de sortie donne

579* `strict` : si l'exécution a traité les avertissements comme des erreurs

580* `target` : le chemin résolu que Claude Code a validé

581* `manifest` : le résultat du manifeste lui-même, ou `null` pour une exécution sans manifeste

582* `contents` : résultats par fichier, chacun nommant son `file` et portant des tableaux `errors`, `warnings`, et `notes`

583 

584À la sortie `2`, la commande n'écrit rien sur stdout. Le message d'erreur va sur stderr.

585 

586<h2 id="claude-plugin-marketplace-commands">

587 Commandes claude plugin marketplace

588</h2>

589 

590Exécutez `claude plugin marketplace <subcommand>` depuis votre shell pour ajouter, lister, actualiser et supprimer les marketplaces d'où vous installez les plugins.

591 

592* **Codes de sortie** : ces sous-commandes suivent la [convention de code de sortie](#claude-plugin-commands) des commandes de plugin

593* **Portées** : leur drapeau `--scope` n'a pas de forme courte `-s`

594 

595Pour ce qu'est une marketplace et comment Claude Code la met en cache, voir [Référence du chargement des plugins](/docs/fr/plugins/loading).

596 

597<h3 id="plugin-marketplace-add">

598 plugin marketplace add

599</h3>

600 

601Ajoutez une marketplace depuis un référentiel GitHub, une URL git, une `marketplace.json` hébergée, ou un chemin local, et déclarez-la dans un fichier de paramètres.

602 

603Après l'avoir ajoutée, Claude Code installe toute [dépendance](/docs/fr/plugins/dependencies) que vos plugins installés manquaient.

604 

605```bash theme={null}

606claude plugin marketplace add <source> [options]

607```

608 

609| Drapeau | Description |

610| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

611| `--scope <scope>` | Fichier de paramètres pour déclarer la marketplace : `user`, `project`, ou `local`. Par défaut `user` |

612| `--sparse <paths...>` | Limitez le checkout git à ces répertoires, pour les monorepos. Sources `github` et `git` seulement |

613| `--claudeai` | Lisez l'argument comme le nom d'une [marketplace hébergée sur claude.ai](/docs/fr/plugins/install#add-from-claude-ai) au lieu d'une source. Nécessite Claude Code v2.1.273 ou ultérieur |

614 

615`<source>` prend n'importe laquelle des formes du tableau ci-dessous, et sa forme décide du type de source et comment Claude Code récupère la marketplace. Pour l'objet source résultant, voir la [référence de marketplace](/docs/fr/plugins/marketplace-reference).

616 

617| Vous tapez | Type de source | Comment Claude Code la récupère |

618| :------------------------------------------------------------------------------------------------ | :------------- | :------------------------------------------------------------------------------------------------------------------------------- |

619| `owner/repo`, `owner/repo#ref`, ou `owner/repo@ref` | `github` | Clone le référentiel GitHub, épinglé à `ref` quand donné. Le propriétaire et le repo doivent suivre les règles de nommage GitHub |

620| `user@host:path[.git][#ref]` | `git` | Clone sur SSH |

621| `https://example.com/repo.git[#ref]`, ou une URL contenant `/_git/` | `git` | Clone sur HTTPS, incluant les URLs Azure DevOps |

622| `https://github.com/owner/repo` ou `https://gitlab.com/namespace/project` | `git` | Clone sur HTTPS après avoir ajouté `.git` |

623| N'importe quelle autre URL `http://` ou `https://`, incluant un hôte git auto-hébergé sans `.git` | `url` | Récupère l'URL en tant que `marketplace.json`. Pour cloner un référentiel là à la place, ajoutez `.git` |

624| `./path`, `../path`, `/path`, ou `~/path` vers un répertoire | `directory` | Lit le répertoire en place. Sur Windows, les formes `.\`, `..\`, et `C:\` fonctionnent aussi |

625| Les mêmes formes de chemin, vers un fichier `.json` | `file` | Lit le fichier en place |

626 

627Pour un hôte dont les URLs de clone ne portent pas le suffixe `.git`, comme AWS CodeCommit, ajoutez la marketplace en tant qu'entrée git dans [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) à la place. Claude Code clone une entrée git qu'elle se termine ou non par `.git`.

628 

629Claude Code clone aussi une URL `gitlab.com` avec des sous-groupes imbriqués, comme `https://gitlab.com/group/subgroup/project`.

630 

631Ajoutez une marketplace et partagez-la avec le projet :

632 

633```bash theme={null}

634claude plugin marketplace add your-org/your-marketplace --scope project

635```

636 

637Claude Code affiche `Successfully added marketplace: your-marketplace (declared in project settings)`, utilisant le `name` du manifeste de la marketplace lui-même. Un ajout répété ou une source invalide affiche l'un de ces résultats à la place :

638 

639* **Marketplace déjà sur le disque** : la sortie est `Marketplace 'your-marketplace' already on disk — declared in project settings` et le code de sortie est `0`

640* **Source non reconnue** : la sortie est `Invalid marketplace source format. Try: owner/repo, https://..., or ./path` et le code de sortie est `1`

641* **Hôte nu comme `gitlab.example.com/team/plugins`** : l'ajout échoue en tant que raccourci `owner/repo` invalide, et le message vous dit d'ajouter `https://` ou d'utiliser un chemin local

642 

643Ajoutez une [marketplace hébergée sur claude.ai](/docs/fr/plugins/install#add-from-claude-ai) par le nom affiché dans la section `From claude.ai:` de `claude plugin marketplace list`:

644 

645```bash theme={null}

646claude plugin marketplace add --claudeai claudeai-organization-library

647```

648 

649Avec `--claudeai`, la commande refuse `--scope` et `--sparse`. La marketplace est hébergée pour votre compte, pas déclarée dans un fichier de paramètres, donc vous ne pouvez pas la partager via le `.claude/settings.json` d'un projet.

650 

651<h3 id="plugin-marketplace-list">

652 plugin marketplace list

653</h3>

654 

655Listez chaque marketplace que vous avez ajoutée, avec sa source.

656 

657```bash theme={null}

658claude plugin marketplace list [options]

659```

660 

661| Drapeau | Description |

662| :------- | :----------------------- |

663| `--json` | Affiche la liste en JSON |

664 

665Claude Code affiche `Configured marketplaces:` et une ligne `Source:` par marketplace, ou `No marketplaces configured`.

666 

667Avec `--json`, Claude Code affiche un tableau avec un objet par marketplace, portant les champs ci-dessous. Chaque champ est une string.

668 

669| Champ | Description |

670| :---------------- | :--------------------------------------------------------------------------------- |

671| `name` | Le nom de la marketplace |

672| `source` | `github`, `git`, `url`, `directory`, `file`, ou `claudeai` |

673| `repo` | `owner/repo`. Sources `github` seulement |

674| `url` | L'URL de clone ou de récupération. Sources `git` et `url` seulement |

675| `path` | Le chemin local. Sources `directory` et `file` seulement |

676| `ref` | La branche ou balise épinglée. Sources `github` et `git`, seulement quand épinglée |

677| `installLocation` | Où Claude Code a mis en cache la marketplace |

678 

679Une [marketplace claude.ai](/docs/fr/plugins/install#add-from-claude-ai) ajoutée n'a pas de clone local, donc son entrée porte ses identifiants claude.ai, `marketplaceId` et `organizationUuid`, à la place de `installLocation`. Elle porte aussi `scope` quand un est enregistré, et `status`.

680 

681Si vos sessions de terminal [synchronisent les plugins depuis votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins), la liste de texte se termine par une section `From claude.ai:`. Cette section nomme les marketplaces que claude.ai liste pour votre compte que vous n'avez pas ajoutées, à la fois basées sur git et hébergées. Elle nécessite Claude Code v2.1.273 ou ultérieur.

682 

683Pour ajouter une marketplace de cette section, voir [Ajouter une marketplace depuis claude.ai](/docs/fr/plugins/install#add-from-claude-ai).

684 

685La sortie `--json` couvre seulement les marketplaces configurées et laisse la section dehors.

686 

687<h3 id="plugin-marketplace-remove">

688 plugin marketplace remove

689</h3>

690 

691Supprimez la déclaration d'une marketplace de vos paramètres. `rm` est un alias pour `remove`.

692 

693<Warning>

694 Quand vous supprimez une marketplace de la dernière portée qui la déclare, Claude Code supprime aussi son cache et désinstalle chaque plugin que vous avez installé depuis elle. Sans `--scope`, la commande supprime la déclaration de chaque portée. Pour actualiser une marketplace sans perdre ses plugins, exécutez `plugin marketplace update` à la place.

695</Warning>

696 

697```bash theme={null}

698claude plugin marketplace remove <name> [options]

699```

700 

701Le `<name>` est le nom de la marketplace que `plugin marketplace list` affiche, pas la source que vous avez passée à `add`.

702 

703| Drapeau | Description |

704| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- |

705| `--scope <scope>` | Supprimez la déclaration d'une portée de paramètres : `user`, `project`, ou `local`. Sans elle, Claude Code supprime la déclaration de chaque portée |

706 

707Supprimez une marketplace de chaque portée :

708 

709```bash theme={null}

710claude plugin marketplace remove your-marketplace

711```

712 

713Claude Code affiche `Successfully removed marketplace: your-marketplace`, ajoutant `(from project settings)` quand vous l'avez scoped. Si vous scoped à un fichier de paramètres qui ne déclare pas la marketplace, la commande échoue avec `Marketplace 'your-marketplace' is not declared in project settings. Omit --scope to remove it from all scopes.`

714 

715<h3 id="plugin-marketplace-update">

716 plugin marketplace update

717</h3>

718 

719Actualisez une marketplace, ou chaque marketplace, depuis sa source pour récupérer les nouveaux plugins et versions. Une marketplace ajoutée avec une branche ou une balise `ref` s'actualise au dernier commit de cette ref, pas la branche par défaut du référentiel.

720 

721```bash theme={null}

722claude plugin marketplace update [name]

723```

724 

725La commande ne prend aucun drapeau au-delà de `--help`.

726 

727Actualisez une marketplace :

728 

729```bash theme={null}

730claude plugin marketplace update your-marketplace

731```

732 

733Claude Code affiche `Successfully updated marketplace: your-marketplace`. Quand vous omettez le nom, il affiche un compte comme `Successfully updated 2 marketplaces`. Sans marketplaces ajoutées, il affiche `No marketplaces configured` et quitte `0`.

734 

735<h2 id="plugin-in-a-session">

736 /plugin dans une session

737</h2>

738 

739À l'intérieur d'une session interactive, `/plugin` ouvre le panneau de plugin. Chaque sous-commande ouvre le panneau sur un onglet, exécute une action là, ou affiche un résultat en ligne. `/plugins` et `/marketplace` sont des alias pour `/plugin`.

740 

741Vous pouvez exécuter ces commandes seulement dans une session de terminal interactive. Dans une exécution non-interactive comme `claude -p`, Claude Code répond que `/plugin` n'est pas disponible dans cet environnement.

742 

743Pour quelles surfaces ont `/plugin`, comment installer sans elle, et ce que chaque onglet du panneau affiche, voir [Installer et gérer les plugins](/docs/fr/plugins/install).

744 

745Un `<plugin>` est un `name` de plugin ou `name@marketplace`.

746 

747Le tableau ci-dessous liste chaque forme de session. Les sous-commandes shell `init`, `update`, `details`, `prune`, `eval`, et `eval init` n'ont pas de forme de session.

748 

749| Commande | Alias | Ce qu'elle fait |

750| :-------------------------------------------------- | :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

751| `/plugin` | | Ouvre le panneau sur l'onglet **Discover**. N'importe quel premier mot non reconnu après `/plugin` fait la même chose |

752| `/plugin help` | `/plugin --help`, `/plugin -h` | Affiche la liste d'utilisation des sous-commandes `/plugin` |

753| `/plugin list [--enabled\|--disabled]` | `ls` | Affiche vos plugins installés de marketplace en ligne, avec version, portée et statut. Un drapeau de filtre affiche seulement cet état. Un plugin dont l'état d'activation n'a pas encore été appliqué est marqué `— run /reload-plugins to apply`. Nécessite Claude Code v2.1.163 ou ultérieur |

754| `/plugin install` | `i` | Ouvre l'onglet **Discover** |

755| `/plugin install <plugin>` | `i` | Ouvre les détails du plugin dans l'onglet **Discover**. Avec `name@marketplace`, les ouvre dans la liste de cette marketplace |

756| `/plugin install <plugin> --marketplace <source>` | `i` | Ajoute la marketplace à `<source>` quand vous ne l'avez pas encore ajoutée, vous demandant de confirmer d'abord, puis ouvre les détails du plugin. Voir [Ajouter une marketplace et installer en une commande](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command). Nécessite Claude Code v2.1.275 ou ultérieur |

757| `/plugin manage` | | Ouvre l'onglet **Installed** |

758| `/plugin stats` | | Ouvre l'onglet **Stats**, dans les sessions où [`/skill-doctor`](/docs/fr/skills#find-unused-skills) est disponible. N'importe où ailleurs il ouvre le panneau sur l'onglet **Discover** |

759| `/plugin enable <plugin>` | | Ouvre l'onglet **Installed** au plugin et l'active |

760| `/plugin disable <plugin>` | | Ouvre l'onglet **Installed** au plugin et le désactive |

761| `/plugin uninstall <plugin>` | | Ouvre l'onglet **Installed** au plugin et le désinstalle |

762| `/plugin configure <plugin>` | `config` | Ouvre la boîte de dialogue [`userConfig`](/docs/fr/plugins/manifest-reference) du plugin, ou rapporte que le plugin n'en déclare aucune. Nécessite Claude Code v2.1.147 ou ultérieur |

763| `/plugin validate <path>` | | Affiche le même rapport que `claude plugin validate`, en ligne |

764| `/plugin tag [path] [--push] [--dry-run] [--force]` | | Crée la balise de version comme `claude plugin tag` le fait. Accepte `--push`, `--dry-run`, et `--force` ou `-f` ; avec n'importe quel autre drapeau ou un argument supplémentaire, Claude Code affiche l'utilisation à la place |

765| `/plugin marketplace` | `market` | Ne fait rien de visible. Passez `add`, `list`, `update`, ou `remove` |

766| `/plugin marketplace add [source]` | `market add` | Avec une source, l'ajoute et rapporte le résultat. Sans une, ouvre l'entrée **Add marketplace** |

767| `/plugin marketplace list` | `market list` | Affiche vos noms de marketplace en ligne |

768| `/plugin marketplace update [name]` | `market update` | Ouvre l'onglet **Marketplaces**. Avec un nom, actualise cette marketplace là |

769| `/plugin marketplace remove [name]` | `market remove`, `market rm`, `marketplace rm` | Ouvre l'onglet **Marketplaces**. Avec un nom, supprime cette marketplace là |

770 

771Si vous nommez un plugin qui n'est pas installé dans le projet courant dans `/plugin enable`, `disable`, `uninstall`, ou `configure`, Claude Code affiche `Plugin "<plugin>" is not installed in this project` au lieu d'agir.

772 

773<h2 id="reload-plugins">

774 /reload-plugins

775</h2>

776 

777Appliquez les modifications de plugins en attente à la session en cours sans la redémarrer. Les modifications en attente sont les plugins que vous avez installés, mis à jour, activés, désactivés ou modifiés sur le disque depuis le démarrage de la session.

778 

779Lorsque vous fermez le panneau `/plugin` avec des modifications en attente que vous y avez apportées, Claude Code exécute `/reload-plugins` pour vous. Exécutez-le vous-même après les modifications de plugins qui se produisent en dehors du panneau, comme une commande `claude plugin` que vous avez exécutée dans un autre terminal.

780 

781```text theme={null}

782/reload-plugins [--force]

783```

784 

785| Flag | Description |

786| :-------- | :-------------------------------------------------------------------------------------------------------- |

787| `--force` | Appliquez le rechargement même s'il invaliderait le cache de prompt. `force` sans tirets fonctionne aussi |

788 

789<h3 id="reload-summary">

790 Résumé du rechargement

791</h3>

792 

793Claude Code recharge chaque plugin actif et affiche une ligne de résumé, `Reloaded: N plugins · N skills · N agents · N hooks · N plugin MCP servers · N plugin LSP servers`, en omettant le nombre de serveurs MCP de plugins dans une session sans terminal interactif. Lorsqu'un plugin a échoué, le résumé ajoute `N errors during load. Run /plugin for details.`

794 

795Le nombre de skills couvre chaque skill qu'un plugin fournit, à la fois ses entrées `commands/` et ses skills `SKILL.md`. Le nombre d'agents est le nombre d'agents chargés dans la session, y compris ceux qui ne proviennent pas de plugins.

796 

797Lorsque les [dépendances](/docs/fr/plugins/dependencies) d'un plugin rechargé sont manquantes, Claude Code les installe, recharge à nouveau, et ajoute `(+ N dependencies: <names>) resolved` au résumé.

798 

799<h3 id="reloads-that-change-mcp-tools">

800 Rechargements qui modifient les outils MCP

801</h3>

802 

803Lorsque le rechargement ajouterait ou supprimerait un serveur MCP de plugin ou l'outil `LSP`, et que ce changement invaliderait le [cache de prompt](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin), Claude Code n'applique pas le rechargement. Il affiche une ligne telle que `This reload changes MCP tools (<server>) — your next message will re-read the whole conversation instead of using the cache. Run /reload-plugins --force to apply.` Passez `--force` pour l'appliquer quand même.

804 

805<h3 id="sessions-without-an-interactive-terminal">

806 Sessions sans terminal interactif

807</h3>

808 

809`/reload-plugins` s'exécute également dans les sessions sans terminal interactif, comme l'application de bureau, le SDK Agent, et le [mode non-interactif](/docs/fr/headless) avec `-p`. Nécessite Claude Code v2.1.260 ou ultérieur.

810 

811Dans ces sessions, la commande s'exécute uniquement lorsque vous la tapez vous-même dans la session, comme dans le prompt `-p` ou la boîte de prompt de l'application de bureau. Lorsqu'elle arrive d'une autre manière, comme via [Remote Control](/docs/fr/remote-control) ou un message relayé depuis Slack, la commande répond `/reload-plugins isn't available over a remote connection in this session.` et ne recharge rien.

812 

813Le rechargement dans ces sessions ne connecte ni ne déconnecte les serveurs MCP de plugins. Ces modifications prennent effet dans votre prochaine session.

814 

815<h2 id="flags-that-load-a-plugin-for-one-session">

816 Drapeaux qui chargent un plugin pour une seule session

817</h2>

818 

819Deux drapeaux `claude` chargent un plugin pour une seule session seulement, sans l'installer. Les deux sont répétables.

820 

821Les auteurs de plugin les utilisent pour tester un plugin avant de le publier. Pour le flux de travail charger-éditer-recharger, voir [Développer sans marketplace](/docs/fr/plugins/create#develop-without-a-marketplace).

822 

823| Drapeau | Description | Exemple |

824| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------- |

825| `--plugin-dir <path>` | Chargez un plugin depuis un répertoire ou une archive `.zip` de celui-ci. Un dossier de plugins charge chaque dossier enfant qui contient un `.claude-plugin/plugin.json`. Chaque drapeau prend un chemin | `claude --plugin-dir ./my-plugin --plugin-dir ./other.zip` |

826| `--plugin-url <url>` | Récupérez une archive `.zip` de plugin depuis une URL. Répétez le drapeau, ou passez plusieurs URLs séparées par des espaces dans une valeur entre guillemets | `claude --plugin-url "https://example.com/a.zip https://example.com/b.zip"` |

827 

828Un plugin que l'un ou l'autre drapeau charge est un plugin de session seulement. `claude plugin list` l'affiche en tant que `<name>@inline` avec portée `session`, mais seulement quand le même drapeau précède la sous-commande. Par exemple, exécutez `claude --plugin-dir ./my-plugin plugin list`.

829 

830Quand un plugin de session seulement partage un nom avec un plugin installé, Claude Code charge la copie de session seulement pour cette session et saute celle installée. La copie installée se charge à la place si vous avez désactivé la copie de session seulement avec `claude plugin disable <name>@inline`, ou si les paramètres gérés verrouillent ce nom de plugin. Pour la priorité, voir [Référence du chargement des plugins](/docs/fr/plugins/loading).

831 

832Un administrateur peut rejeter les deux drapeaux, et les dossiers nommés dans la variable [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/fr/env-vars#variables), avec le paramètre géré [`disableSideloadFlags`](/docs/fr/settings-reference#disablesideloadflags). Claude Code affiche alors que le drapeau est désactivé par les paramètres gérés de votre organisation et quitte `1` sans démarrer.

833 

834Depuis le SDK Agent, l'option [`plugins`](/docs/fr/agent-sdk/plugins) est l'équivalent de `--plugin-dir`.

835 

836<h2 id="next-steps">

837 Prochaines étapes

838</h2>

839 

840* [Installer et gérer les plugins](/docs/fr/plugins/install) : les mêmes opérations que les étapes, avec ce que vous voyez à chacune

841* [Référence du chargement des plugins](/docs/fr/plugins/loading) : ce que chaque commande change sur le disque et quelle portée prend effet

842* [Dépanner les plugins](/docs/fr/plugins/troubleshooting) : installer, marketplace, charger, et valider les messages d'erreur avec leurs corrections

843* [Référence du manifeste de plugin](/docs/fr/plugins/manifest-reference) : les champs que `claude plugin validate` vérifie

plugins/code-intelligence.md +156 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Plugins d'intelligence de code

6 

7> Installez un plugin de serveur de langage pour que Claude voie les erreurs de type après les modifications et navigue dans le code par symbole, et répondez à la boîte de dialogue de recommandation du plugin LSP.

8 

9Un plugin d'intelligence de code donne à Claude les diagnostics en direct et la navigation vers la définition que votre éditeur possède, de sorte que Claude détecte les erreurs de type et les imports manquants que ses propres modifications introduisent avant que vous n'exécutiez votre build, et trouve les définitions et les références par symbole au lieu de par recherche textuelle.

10 

11Chaque plugin connecte Claude Code à un serveur de langage pour un langage via le Language Server Protocol (LSP). Vous installez le plugin depuis la marketplace officielle d'Anthropic et le binaire du serveur de langage sur votre machine.

12 

13<Note>

14 Les plugins d'intelligence de code fonctionnent dans les sessions de terminal. Dans les [sessions cloud](/docs/fr/claude-code-on-the-web), Claude Code ne démarre pas les serveurs de langage des plugins, donc Claude n'obtient pas de diagnostics ou de navigation de code là-bas. Pour écrire votre propre plugin de serveur de langage, ou pour connecter un serveur de langage qui n'a pas de plugin, voir [Serveurs LSP dans les composants de plugin](/docs/fr/plugins/components#lsp-servers).

15</Note>

16 

17Pour commencer, trouvez votre langage dans le tableau sous [Installer un plugin d'intelligence de code](#install-a-code-intelligence-plugin). Les plugins de ce tableau proviennent de la [marketplace officielle de plugins](/docs/fr/plugins/anthropic-marketplaces) d'Anthropic.

18 

19Si vous avez déjà vu une boîte de dialogue de **recommandation de plugin LSP**, voir [Accepter ou rejeter la boîte de dialogue de recommandation](#accept-or-dismiss-the-recommendation-dialog) pour savoir ce que chaque choix fait.

20 

21<h2 id="install-a-code-intelligence-plugin">

22 Installer un plugin d'intelligence de code

23</h2>

24 

25Un plugin d'intelligence de code indique à Claude Code quelle commande démarre le serveur de langage et quelles extensions de fichier il gère. Il n'inclut pas le serveur de langage. Installez d'abord le binaire du serveur de langage, puis le plugin, puis confirmez que le serveur démarre.

26 

27<Steps>

28 <Step title="Installer le binaire du serveur de langage">

29 Trouvez votre langage dans le tableau ci-dessous et installez le binaire dans sa ligne. Si votre langage n'est pas listé, voir [Ajouter un langage sans plugin officiel](#add-a-language-without-an-official-plugin).

30 

31 | Langage | Plugin | Binaire |

32 | :----------------------- | :--------------------------------------------------------------------------------------------------------------- | :------------------------------- |

33 | C/C++ | [`clangd-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/clangd-lsp) | `clangd` |

34 | C# | [`csharp-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/csharp-lsp) | `csharp-ls` |

35 | Go | [`gopls-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/gopls-lsp) | `gopls` |

36 | Java | [`jdtls-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/jdtls-lsp) | `jdtls` |

37 | Kotlin | [`kotlin-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/kotlin-lsp) | `kotlin-lsp` |

38 | Liquid | [`liquid-lsp`](https://github.com/Shopify/liquid-skills/tree/main/plugins/liquid-lsp) | `shopify`, depuis la CLI Shopify |

39 | Lua | [`lua-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/lua-lsp) | `lua-language-server` |

40 | PHP | [`php-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/php-lsp) | `intelephense` |

41 | Python | [`pyright-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/pyright-lsp) | `pyright-langserver` |

42 | Ruby | [`ruby-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/ruby-lsp) | `ruby-lsp` |

43 | Rust | [`rust-analyzer-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/rust-analyzer-lsp) | `rust-analyzer` |

44 | Swift | [`swift-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/swift-lsp) | `sourcekit-lsp` |

45 | TypeScript et JavaScript | [`typescript-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/typescript-lsp) | `typescript-language-server` |

46 

47 Anthropic maintient tous les plugins du tableau sauf `liquid-lsp`, que Shopify maintient et que la marketplace officielle liste.

48 

49 Pour trouver la commande qui installe le binaire, suivez le lien du plugin dans le tableau vers son README. Pour TypeScript, cette commande est `npm install -g typescript-language-server typescript`.

50 

51 Après avoir installé le binaire, confirmez qu'il se trouve sur le `PATH` du shell à partir duquel vous démarrez `claude`, par exemple avec `which typescript-language-server`, ou `Get-Command typescript-language-server` dans PowerShell.

52 </Step>

53 

54 <Step title="Installer le plugin">

55 Pour installer le plugin listé pour votre langage dans le tableau de l'étape 1, exécutez `/plugin install` dans une session Claude Code, en remplaçant `typescript-lsp` par le nom de ce plugin :

56 

57 ```

58 /plugin install typescript-lsp@claude-plugins-official

59 ```

60 

61 Un message de confirmation indique si le plugin est actif maintenant ou s'il a besoin de `/reload-plugins`. Si l'installation échoue avec `Marketplace "claude-plugins-official" not found`, voir l'[entrée de dépannage pour cette erreur](/docs/fr/plugins/troubleshooting#marketplace-claude-plugins-official-not-found). Pour contrôler où le plugin est installé, ou pour exécuter l'installation depuis votre shell au lieu de dans Claude Code, voir [Installer les plugins](/docs/fr/plugins/install).

62 </Step>

63 

64 <Step title="Confirmer que le serveur démarre">

65 Le serveur de langage démarre la première fois que Claude modifie un fichier avec l'une des extensions du plugin. Pour le voir fonctionner, demandez à Claude d'introduire une erreur de type dans un fichier de ce langage, puis de la corriger. Ensuite, vérifiez la conversation pour une ligne de diagnostics :

66 

67 * **Une ligne de diagnostics apparaît** : `Found N new diagnostic issues in M files (ctrl+o to expand)` sous la modification qui a introduit l'erreur signifie que le serveur a démarré.

68 * **Aucune ligne de diagnostics n'apparaît** : exécutez `/plugin` et ouvrez l'onglet **Errors**. Une ligne lisant `Executable not found in $PATH: "<binary>"` nomme le binaire à installer. Si l'onglet n'a pas de telle ligne, voir [Dépanner l'intelligence de code](#troubleshoot-code-intelligence).

69 

70 Après avoir installé un binaire manquant, Claude Code réessaie la prochaine fois que Claude modifie un fichier correspondant. Si vous avez installé le binaire dans un répertoire qui ne se trouve pas sur le `PATH` du shell à partir duquel vous avez démarré `claude`, démarrez une nouvelle session à partir d'un shell où il se trouve.

71 </Step>

72</Steps>

73 

74<h2 id="see-what-claude-gains">

75 Voir ce que Claude gagne

76</h2>

77 

78Avec un serveur de langage en cours d'exécution, Claude gagne les diagnostics et la navigation de code :

79 

80* **Diagnostics après les modifications** : chaque fois que Claude modifie ou écrit un fichier que le serveur gère, Claude obtient les erreurs et les avertissements que le serveur signale. Il voit une erreur de type, un import manquant, ou une erreur de syntaxe qu'il a introduite sans exécuter un compilateur.

81* **Navigation de code** : Claude obtient un outil `LSP` qui recherche les symboles via le serveur au lieu de les rechercher par texte. L'outil est en lecture seule. Pour savoir ce que Claude peut rechercher avec l'outil et comment les permissions s'appliquent à celui-ci, voir [Comportement de l'outil LSP](/docs/fr/tools-reference#lsp-tool-behavior).

82 

83<h3 id="read-the-diagnostics-yourself">

84 Lire les diagnostics vous-même

85</h3>

86 

87Après que Claude modifie un fichier que le serveur gère, la conversation affiche uniquement le résumé `Found N new diagnostic issues`. Pour lire les problèmes eux-mêmes, appuyez sur **Ctrl+O**.

88 

89<h2 id="accept-or-dismiss-the-recommendation-dialog">

90 Accepter ou rejeter la boîte de dialogue de recommandation

91</h2>

92 

93Si un binaire de serveur de langage se trouve déjà sur votre `PATH` et le plugin qui l'utilise n'est pas installé, Claude Code vous propose d'installer le plugin pour vous dans une boîte de dialogue intitulée **LSP plugin recommendation**.

94 

95<h3 id="when-the-recommendation-dialog-appears">

96 Quand la boîte de dialogue de recommandation apparaît

97</h3>

98 

99La boîte de dialogue **LSP plugin recommendation** peut apparaître après que Claude modifie un fichier. Ces conditions décident si elle apparaît et quel plugin elle offre :

100 

101* **Un plugin correspond au fichier** : l'une des marketplaces que vous avez ajoutées, ou la marketplace officielle que Claude Code a enregistrée pour vous, liste un plugin d'intelligence de code pour l'extension de ce fichier, et le binaire du plugin est installé.

102* **Officiel en premier** : quand plus d'une marketplace offre un plugin pour l'extension, la boîte de dialogue offre le plugin de la marketplace officielle.

103* **Une fois par session** : la boîte de dialogue apparaît au maximum une fois dans une session, pour le premier fichier correspondant que Claude modifie.

104* **Pas pour les sessions cloud** : la boîte de dialogue n'apparaît jamais quand votre terminal est attaché à une session cloud, comme celle que vous avez démarrée avec [`claude --cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud).

105 

106<h3 id="respond-to-the-recommendation-dialog">

107 Répondre à la boîte de dialogue de recommandation

108</h3>

109 

110La boîte de dialogue **LSP plugin recommendation** nomme le plugin et offre ces choix :

111 

112* **Yes, install** : Claude Code installe le plugin pour votre compte utilisateur et affiche `<plugin> installed · restart to apply`. Démarrez une nouvelle session pour charger le serveur.

113* **No, not now** : la boîte de dialogue se ferme, et une session ultérieure peut offrir le plugin à nouveau. Appuyer sur **Esc** fait la même chose.

114* **Never for this plugin** : la boîte de dialogue cesse d'apparaître pour ce plugin et continue d'apparaître pour les autres.

115* **Disable all LSP recommendations** : la boîte de dialogue cesse d'apparaître pour tous les langages.

116 

117Si vous ne choisissez pas une option, Claude Code la ferme après 30 secondes et compte cela comme ignoré. Le compte est conservé entre les sessions. Après cinq boîtes de dialogue ignorées, Claude Code cesse de recommander les plugins, comme si vous aviez choisi **Disable all LSP recommendations**.

118 

119<h3 id="turn-recommendations-back-on">

120 Réactiver les recommandations

121</h3>

122 

123La boîte de dialogue **LSP plugin recommendation** cesse d'apparaître après que vous ayez choisi **Disable all LSP recommendations** ou l'ayez ignorée cinq fois.

124 

125* **Désactivée ou ignorée cinq fois** : pour la réactiver dans l'un ou l'autre cas, supprimez les clés `lspRecommendationDisabled` et `lspRecommendationIgnoredCount` de `~/.claude.json`, le fichier de configuration propre à Claude Code.

126* **Never for this plugin** : si vous avez choisi **Never for this plugin** et souhaitez que ce plugin soit offert à nouveau, supprimez son identifiant `name@marketplace` de la liste `lspRecommendationNeverPlugins` dans le même fichier.

127 

128<h2 id="troubleshoot-code-intelligence">

129 Dépanner l'intelligence de code

130</h2>

131 

132La page de dépannage des plugins couvre les symptômes spécifiques aux plugins d'intelligence de code sous [Language server doesn't start, uses too much memory, or reports wrong diagnostics](/docs/fr/plugins/troubleshooting#language-server-doesnt-start) :

133 

134* **Le serveur de langage ne démarre pas** : vous voyez `Executable not found in $PATH` dans l'onglet **Errors** de `/plugin`, ou Claude ne signale jamais de diagnostics pour le langage.

135* **Utilisation élevée de la mémoire** : l'utilisation de la mémoire augmente pendant que le serveur indexe le projet.

136* **Diagnostics faux positifs dans un monorepo** : les diagnostics signalent les imports comme non résolus quand ils ne le sont pas.

137 

138<h2 id="add-a-language-without-an-official-plugin">

139 Ajouter un langage sans plugin officiel

140</h2>

141 

142Si votre langage ne figure pas dans le [tableau des plugins officiels](#install-a-code-intelligence-plugin), vous pouvez toujours connecter un serveur de langage.

143 

1441. Écrivez un plugin avec un fichier `.lsp.json` qui nomme la commande du serveur et les extensions de fichier qu'il gère.

1452. Ensuite, chargez le plugin avec [`--plugin-dir`](/docs/fr/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) ou publiez-le sur une marketplace.

146 

147Pour les champs du fichier et un exemple travaillé, voir [Serveurs LSP dans les composants de plugin](/docs/fr/plugins/components#lsp-servers).

148 

149<h2 id="next-steps">

150 Prochaines étapes

151</h2>

152 

153* [Serveurs LSP dans les composants de plugin](/docs/fr/plugins/components#lsp-servers) : écrivez le `.lsp.json` pour un serveur de langage qui n'a pas de plugin officiel

154* [Installer et gérer les plugins](/docs/fr/plugins/install) : portées, mises à jour et désinstallation

155* [Dépanner les plugins](/docs/fr/plugins/troubleshooting) : charger les erreurs au-delà de celles spécifiques au serveur de langage sur cette page

156* [Trouver les plugins dans la marketplace officielle](/docs/fr/plugins/anthropic-marketplaces#find-plugins-in-the-official-marketplace) : où parcourir le reste de la marketplace officielle

plugins/components.md +1130 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Ajouter des composants à un plugin

6 

7> Ajoutez des skills, des hooks, des serveurs MCP et tous les autres types de composants à un plugin Claude Code, avec un exemple qui valide chacun.

8 

9export const Piece = ({id, children}) => <div className="pe-piece" data-piece={id}>{children}</div>;

10 

11export const PluginExplorer = ({children}) => {

12 const PIECES = [{

13 id: 'manifest',

14 name: 'Manifest',

15 path: '.claude-plugin/plugin.json',

16 required: "Required by Anthropic's directory",

17 lines: [{

18 depth: 0,

19 kind: 'folder',

20 text: '.claude-plugin/'

21 }, {

22 depth: 1,

23 kind: 'file',

24 text: 'plugin.json'

25 }],

26 href: '/en/plugins/manifest-reference#manifest-file',

27 linkText: 'Go to the manifest reference'

28 }, {

29 id: 'skills',

30 name: 'Skills',

31 path: 'skills/review/SKILL.md',

32 lines: [{

33 depth: 0,

34 kind: 'folder',

35 text: 'skills/'

36 }, {

37 depth: 1,

38 kind: 'folder',

39 text: 'review/'

40 }, {

41 depth: 2,

42 kind: 'file',

43 text: 'SKILL.md'

44 }],

45 href: '/en/plugins/components#skills',

46 linkText: 'Go to the Skills section'

47 }, {

48 id: 'commands',

49 name: 'Commands',

50 path: 'commands/about.md',

51 lines: [{

52 depth: 0,

53 kind: 'folder',

54 text: 'commands/'

55 }, {

56 depth: 1,

57 kind: 'file',

58 text: 'about.md'

59 }],

60 href: '/en/plugins/components#commands',

61 linkText: 'Go to the Commands section'

62 }, {

63 id: 'agents',

64 name: 'Agents',

65 path: 'agents/security-reviewer.md',

66 lines: [{

67 depth: 0,

68 kind: 'folder',

69 text: 'agents/'

70 }, {

71 depth: 1,

72 kind: 'file',

73 text: 'security-reviewer.md'

74 }],

75 href: '/en/plugins/components#agents',

76 linkText: 'Go to the Agents section'

77 }, {

78 id: 'hooks',

79 name: 'Hooks',

80 path: 'hooks/hooks.json',

81 lines: [{

82 depth: 0,

83 kind: 'folder',

84 text: 'hooks/'

85 }, {

86 depth: 1,

87 kind: 'file',

88 text: 'hooks.json'

89 }],

90 href: '/en/plugins/components#hooks',

91 linkText: 'Go to the Hooks section'

92 }, {

93 id: 'monitors',

94 name: 'Monitors',

95 path: 'monitors/monitors.json',

96 lines: [{

97 depth: 0,

98 kind: 'folder',

99 text: 'monitors/'

100 }, {

101 depth: 1,

102 kind: 'file',

103 text: 'monitors.json'

104 }],

105 href: '/en/plugins/components#monitors',

106 linkText: 'Go to the Monitors section'

107 }, {

108 id: 'output-styles',

109 name: 'Output styles',

110 path: 'output-styles/terse.md',

111 lines: [{

112 depth: 0,

113 kind: 'folder',

114 text: 'output-styles/'

115 }, {

116 depth: 1,

117 kind: 'file',

118 text: 'terse.md'

119 }],

120 href: '/en/plugins/components#themes-and-output-styles',

121 linkText: 'Go to the Themes and output styles section'

122 }, {

123 id: 'themes',

124 name: 'Themes',

125 path: 'themes/dracula.json',

126 lines: [{

127 depth: 0,

128 kind: 'folder',

129 text: 'themes/'

130 }, {

131 depth: 1,

132 kind: 'file',

133 text: 'dracula.json'

134 }],

135 href: '/en/plugins/components#themes-and-output-styles',

136 linkText: 'Go to the Themes and output styles section'

137 }, {

138 id: 'workflows',

139 name: 'Workflows',

140 path: 'workflows/audit-routes.js',

141 lines: [{

142 depth: 0,

143 kind: 'folder',

144 text: 'workflows/'

145 }, {

146 depth: 1,

147 kind: 'file',

148 text: 'audit-routes.js'

149 }],

150 href: '/en/workflows#distribute-a-workflow-in-a-plugin',

151 linkText: 'Go to Distribute a workflow in a plugin'

152 }, {

153 id: 'bin',

154 name: 'Executables',

155 path: 'bin/hello-plugin',

156 lines: [{

157 depth: 0,

158 kind: 'folder',

159 text: 'bin/'

160 }, {

161 depth: 1,

162 kind: 'file',

163 text: 'hello-plugin'

164 }],

165 href: '/en/plugins/components#executables',

166 linkText: 'Go to the Executables section'

167 }, {

168 id: 'scripts',

169 name: 'Scripts',

170 path: 'scripts/format.sh',

171 lines: [{

172 depth: 0,

173 kind: 'folder',

174 text: 'scripts/'

175 }, {

176 depth: 1,

177 kind: 'file',

178 text: 'format.sh'

179 }],

180 href: '/en/plugins/components#hooks',

181 linkText: 'Go to the Hooks section'

182 }, {

183 id: 'settings',

184 name: 'Default settings',

185 path: 'settings.json',

186 lines: [{

187 depth: 0,

188 kind: 'file',

189 text: 'settings.json'

190 }],

191 href: '/en/plugins/components#default-settings',

192 linkText: 'Go to the Default settings section'

193 }, {

194 id: 'mcp',

195 name: 'MCP servers',

196 path: '.mcp.json',

197 lines: [{

198 depth: 0,

199 kind: 'file',

200 text: '.mcp.json'

201 }],

202 href: '/en/plugins/components#mcp-servers',

203 linkText: 'Go to the MCP servers section'

204 }, {

205 id: 'lsp',

206 name: 'LSP servers',

207 path: '.lsp.json',

208 lines: [{

209 depth: 0,

210 kind: 'file',

211 text: '.lsp.json'

212 }],

213 href: '/en/plugins/components#lsp-servers',

214 linkText: 'Go to the LSP servers section'

215 }];

216 const [selectedId, setSelectedId] = useState('manifest');

217 const [isFullscreen, setIsFullscreen] = useState(false);

218 const rootRef = useRef(null);

219 useEffect(() => {

220 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

221 document.addEventListener('fullscreenchange', onFsChange);

222 return () => document.removeEventListener('fullscreenchange', onFsChange);

223 }, []);

224 const toggleFullscreen = () => {

225 if (!rootRef.current) return;

226 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

227 };

228 const selected = PIECES.find(p => p.id === selectedId) || PIECES[0];

229 const onTreeKeyDown = e => {

230 const keys = ['ArrowDown', 'ArrowUp', 'Home', 'End'];

231 if (keys.indexOf(e.key) === -1) return;

232 const i = PIECES.findIndex(p => p.id === selectedId);

233 let next = i;

234 if (e.key === 'ArrowDown') next = Math.min(PIECES.length - 1, i + 1);

235 if (e.key === 'ArrowUp') next = Math.max(0, i - 1);

236 if (e.key === 'Home') next = 0;

237 if (e.key === 'End') next = PIECES.length - 1;

238 e.preventDefault();

239 if (next === i) return;

240 const id = PIECES[next].id;

241 setSelectedId(id);

242 const el = document.getElementById('pe-node-' + id);

243 if (el) el.focus();

244 };

245 const FolderIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">

246 <path d="M1.5 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5h6a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1h-10.5a1 1 0 0 1-1-1z" />

247 </svg>;

248 const FileIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">

249 <path d="M4 1.5h5.5L13 5v9.5H4z" />

250 <path d="M9.5 1.5V5H13" />

251 </svg>;

252 return <div ref={rootRef} className={isFullscreen ? 'pe-root pe-fullscreen not-prose' : 'pe-root not-prose'} data-selected={selected.id}>

253 <style>{`

254 .pe-root {

255 --pe-mono: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);

256 --pe-accent: #D97757;

257 --pe-accent-text: #A8502F;

258 --pe-accent-bg: rgba(217,119,87,0.10);

259 --pe-bg: #FFFFFF;

260 --pe-surface: #FAFAF7;

261 --pe-hover: #F0EEE6;

262 --pe-border: #E8E6DC;

263 --pe-text: #141413;

264 --pe-text-2: #3D3D3A;

265 --pe-text-3: #5E5D59;

266 font-family: inherit;

267 background: var(--pe-bg);

268 color: var(--pe-text);

269 border: 1px solid var(--pe-border);

270 border-radius: 12px;

271 margin: 1.5rem 0;

272 overflow: hidden;

273 box-sizing: border-box;

274 }

275 .dark .pe-root {

276 --pe-accent-text: #EBA98F;

277 --pe-accent-bg: rgba(217,119,87,0.18);

278 --pe-bg: #1A1918;

279 --pe-surface: #232221;

280 --pe-hover: #2E2D2B;

281 --pe-border: #3A3936;

282 --pe-text: #F1EFE9;

283 --pe-text-2: #D6D4CA;

284 --pe-text-3: #B8B5AD;

285 }

286 .pe-root *, .pe-root *::before, .pe-root *::after { box-sizing: border-box; }

287 .pe-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 24px 16px; border-bottom: 1px solid var(--pe-border); }

288 .pe-head-text { flex: 1; min-width: 0; }

289 .pe-fs-btn { flex-shrink: 0; width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--pe-border); border-radius: 6px; background: var(--pe-surface); color: var(--pe-text-2); font-size: 15px; line-height: 1; cursor: pointer; }

290 .pe-fs-btn:hover { background: var(--pe-hover); }

291 .pe-fs-btn:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: 2px; }

292 .pe-fullscreen { border-radius: 0; height: 100vh; display: flex; flex-direction: column; overflow: auto; }

293 .pe-fullscreen .pe-body { flex: 1; }

294 .pe-title { font-size: 19px; font-weight: 600; line-height: 1.3; color: var(--pe-text); margin: 0; }

295 .pe-sub { font-size: 15px; line-height: 1.5; color: var(--pe-text-3); margin: 4px 0 0; }

296 .pe-sub code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }

297 .pe-body { display: flex; align-items: stretch; }

298 .pe-tree-pane { width: 270px; flex-shrink: 0; background: var(--pe-surface); border-right: 1px solid var(--pe-border); padding: 16px 0 12px; }

299 .pe-panel { flex: 1; min-width: 0; padding: 16px 24px 24px; }

300 .pe-caption { font-size: 13px; font-weight: 600; color: var(--pe-text-3); margin: 0 0 10px; }

301 .pe-tree-pane .pe-caption { padding: 0 16px; }

302 .pe-rootline { display: flex; align-items: center; gap: 7px; padding: 3px 16px; font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-text-3); }

303 .pe-node {

304 display: block; width: 100%; margin: 0; padding: 3px 16px 3px 30px; text-align: left; cursor: pointer;

305 background: transparent; color: var(--pe-text-2);

306 border: none; border-left: 3px solid transparent;

307 font-family: var(--pe-mono); font-size: 13.5px; line-height: 1.4;

308 }

309 .pe-node:hover { background: var(--pe-hover); }

310 .pe-node:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: -2px; }

311 .pe-node[aria-pressed="true"] { background: var(--pe-accent-bg); border-left-color: var(--pe-accent); color: var(--pe-accent-text); font-weight: 600; }

312 .pe-line { display: flex; align-items: center; gap: 7px; padding: 2px 0; }

313 .pe-line-tree { flex-wrap: wrap; }

314 .pe-line-tree .pe-req { flex-basis: 100%; margin: 2px 0 0 22px; white-space: normal; width: fit-content; max-width: calc(100% - 22px); }

315 .pe-line span { overflow-wrap: anywhere; }

316 .pe-piece { display: none; font-size: 16px; line-height: 1.6; color: var(--pe-text-2); }

317 .pe-root[data-selected="manifest"] .pe-piece[data-piece="manifest"],

318 .pe-root[data-selected="skills"] .pe-piece[data-piece="skills"],

319 .pe-root[data-selected="commands"] .pe-piece[data-piece="commands"],

320 .pe-root[data-selected="agents"] .pe-piece[data-piece="agents"],

321 .pe-root[data-selected="hooks"] .pe-piece[data-piece="hooks"],

322 .pe-root[data-selected="monitors"] .pe-piece[data-piece="monitors"],

323 .pe-root[data-selected="output-styles"] .pe-piece[data-piece="output-styles"],

324 .pe-root[data-selected="themes"] .pe-piece[data-piece="themes"],

325 .pe-root[data-selected="workflows"] .pe-piece[data-piece="workflows"],

326 .pe-root[data-selected="bin"] .pe-piece[data-piece="bin"],

327 .pe-root[data-selected="scripts"] .pe-piece[data-piece="scripts"],

328 .pe-root[data-selected="settings"] .pe-piece[data-piece="settings"],

329 .pe-root[data-selected="mcp"] .pe-piece[data-piece="mcp"],

330 .pe-root[data-selected="lsp"] .pe-piece[data-piece="lsp"] { display: block; }

331 .pe-piece p { margin: 0 0 10px; }

332 .pe-piece p:last-child { margin-bottom: 0; }

333 .pe-piece code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }

334 .pe-piece .code-block { margin: 12px 0 0; }

335 .pe-piece pre code { padding: 0; border: none; background: none; }

336 .pe-piece a { color: var(--pe-accent-text); }

337 .pe-line-compact { display: none; }

338 .pe-icon { flex-shrink: 0; }

339 .pe-req { margin-left: 8px; padding: 0 6px; border-radius: 999px; font-size: 11px; line-height: 18px; letter-spacing: .02em; color: var(--pe-accent-text); border: 1px solid var(--pe-border); background: var(--pe-surface); white-space: nowrap; font-weight: 500; vertical-align: middle; }

340 .pe-name { font-size: 22px; font-weight: 600; line-height: 1.25; letter-spacing: -0.2px; color: var(--pe-text); margin: 0; }

341 .pe-path { font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-accent-text); margin: 4px 0 0; overflow-wrap: anywhere; }

342 .pe-block { margin: 20px 0 0; }

343 .pe-link {

344 display: inline-block; margin: 24px 0 0; padding: 8px 14px; border-radius: 8px;

345 font-size: 14.5px; font-weight: 600; text-decoration: none;

346 color: var(--pe-accent-text); background: var(--pe-accent-bg); border: 1px solid var(--pe-accent);

347 }

348 .pe-link:hover { filter: brightness(0.97); }

349 .pe-link:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: 2px; }

350 @media (max-width: 700px) {

351 .pe-head { padding: 16px 16px 14px; }

352 .pe-body { flex-direction: column; }

353 .pe-tree-pane { width: 100%; border-right: none; border-bottom: 1px solid var(--pe-border); }

354 .pe-line-tree { display: none; }

355 .pe-line-compact { display: flex; }

356 .pe-panel { padding: 16px 16px 20px; }

357 }

358 `}</style>

359 

360 <div className="pe-head">

361 <div className="pe-head-text">

362 <div className="pe-title">What goes in a plugin</div>

363 <div className="pe-sub">This example plugin, <code>my-plugin</code>, has one of every kind of component, each in its default location. Select a file or folder to read what it’s for and see what goes in it.</div>

364 </div>

365 <button type="button" className="pe-fs-btn" onClick={toggleFullscreen} aria-label={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}>

366 {isFullscreen ? '⤡' : '⛶'}

367 </button>

368 </div>

369 

370 <div className="pe-body">

371 <div className="pe-tree-pane">

372 <div className="pe-caption" id="pe-tree-caption">Plugin directory</div>

373 <div role="group" aria-labelledby="pe-tree-caption" onKeyDown={onTreeKeyDown}>

374 <div className="pe-rootline"><FolderIcon /><span>my-plugin/</span></div>

375 {PIECES.map(p => <button key={p.id} id={'pe-node-' + p.id} type="button" className="pe-node" aria-pressed={p.id === selected.id} aria-label={p.name + ', ' + p.path} onClick={() => setSelectedId(p.id)}>

376 {p.lines.map((line, i) => <span key={i} className="pe-line pe-line-tree" style={{

377 paddingLeft: line.depth * 18 + 'px'

378 }}>

379 {line.kind === 'folder' ? <FolderIcon /> : <FileIcon />}

380 <span>{line.text}</span>

381 {p.required && i === p.lines.length - 1 ? <span className="pe-req">{p.required}</span> : null}

382 </span>)}

383 <span className="pe-line pe-line-compact">

384 <FileIcon />

385 <span>{p.path}</span>

386 {p.required ? <span className="pe-req">{p.required}</span> : null}

387 </span>

388 </button>)}

389 </div>

390 </div>

391 

392 <div className="pe-panel" role="region" aria-labelledby="pe-panel-caption" aria-live="polite" aria-atomic="true">

393 <div className="pe-caption" id="pe-panel-caption">Selected piece</div>

394 <div className="pe-name">{selected.name}{selected.required ? <span className="pe-req">{selected.required}</span> : null}</div>

395 <div className="pe-path">{selected.path}</div>

396 

397 <div className="pe-block">{children}</div>

398 

399 <a className="pe-link" href={selected.href}>{selected.linkText}</a>

400 </div>

401 </div>

402 </div>;

403};

404 

405Un plugin Claude Code est construit à partir de composants, tels que des skills, des agents, des hooks et des serveurs MCP. Chaque composant a un dossier par défaut dans le plugin, une clé de manifeste optionnelle dans `.claude-plugin/plugin.json` qui remplace ou ajoute à ce dossier, et un nom que l'utilisateur voit. Pour chaque tableau complet des champs de clé, consultez la [référence du manifeste](/docs/fr/plugins/manifest-reference#fields).

406 

407Utilisez cette page pour ajouter un composant à un plugin qui charge déjà.

408 

409Après avoir ajouté un composant, exécutez `/reload-plugins` dans une session en cours ou démarrez une nouvelle session pour que Claude Code le charge. Pour vérifier le fichier du composant avant de le charger, exécutez [`claude plugin validate .`](/docs/fr/plugins/cli-reference#plugin-validate) dans votre shell à partir du répertoire du plugin.

410 

411<Note>

412 Ces cas sont couverts sur d'autres pages :

413 

414 * **Construire votre premier plugin** : commencez par [Créer un plugin](/docs/fr/plugins/create)

415 * **Installer le plugin de quelqu'un d'autre** : consultez [Installer des plugins](/docs/fr/plugins/install)

416 * **Les utilisateurs de votre plugin sont sur claude.ai ou dans Cowork** : un ensemble différent de composants se charge là. Consultez [Plugins sur claude.ai et dans Cowork](https://claude.com/docs/plugins/overview)

417</Note>

418 

419<h2 id="explore-the-plugin-directory">

420 Explorez le répertoire du plugin

421</h2>

422 

423L'explorateur montre un exemple de plugin, `my-plugin`, qui a un de chaque type de composant à son emplacement par défaut :

424 

425* Une skill de révision et une commande `about`

426* Un sous-agent de révision de sécurité

427* Un hook qui formate les fichiers après que Claude les édite, et le dossier `scripts/` qu'il appelle

428* Un moniteur de journal

429* Un style de sortie et un thème de couleur

430* Un workflow d'audit de route

431* Un exécutable `hello-plugin`

432* Les paramètres par défaut

433* Un serveur MCP local et un serveur de langage Go

434 

435Chaque fichier est le plus petit exemple valide de son format, là pour montrer la forme plutôt que d'être utile : une skill ou un agent réel porte des instructions complètes et souvent des fichiers de support, et un hook ou un moniteur réel fait un vrai travail. Les sections après l'explorateur utilisent les mêmes fichiers que leurs exemples et renvoient à des versions plus complètes. Sélectionnez un fichier ou un dossier pour lire à quoi il sert, voir ce qu'il contient, et trouver la section qui le couvre.

436 

437<PluginExplorer>

438 <Piece id="manifest">

439 Le [manifeste](/docs/fr/plugins/manifest-reference) est le fichier `plugin.json` dans le répertoire `.claude-plugin/` d'un plugin. Il contient les métadonnées du plugin et les valeurs `userConfig` que Claude Code demande à l'utilisateur. Seul `name` est requis. Dans celui-ci, `description` est le texte que les utilisateurs voient pour le plugin dans `/plugin`, et `version` garde les utilisateurs sur cette version jusqu'à ce que vous la changiez :

440 

441 ```json theme={null}

442 {

443 "name": "my-plugin",

444 "version": "1.0.0",

445 "description": "Review, formatting, and database tools for this team"

446 }

447 ```

448 </Piece>

449 

450 <Piece id="skills">

451 Une [skill](/docs/fr/skills) est un fichier `SKILL.md`. Enregistrez chaque skill dans son propre répertoire sous `skills/`. Claude lit la `description` de chaque skill, et quand ce que l'utilisateur demande correspond, comme demander à Claude de réviser une pull request ici, Claude charge les instructions de la skill et les suit. L'utilisateur peut aussi l'exécuter directement comme `/my-plugin:review` :

452 

453 ```markdown theme={null}

454 ---

455 description: Reviews a pull request for style and test coverage. Use when asked to review code.

456 ---

457 

458 Review the changed files. Report style problems first, then missing tests.

459 ```

460 </Piece>

461 

462 <Piece id="commands">

463 Une commande est un seul fichier Markdown que l'utilisateur exécute par nom. Les commandes sont le format plus ancien : une skill s'exécute par nom de la même manière et peut aussi porter des fichiers de support dans son propre répertoire, donc écrivez les nouvelles comme des skills et gardez `commands/` pour les fichiers que vous avez déjà. Ce fichier devient `/my-plugin:about` et prend le même frontmatter qu'une skill :

464 

465 ```markdown theme={null}

466 ---

467 description: Summarize the repository

468 ---

469 

470 Summarize what this repository does in three sentences.

471 ```

472 </Piece>

473 

474 <Piece id="agents">

475 Un [sous-agent](/docs/fr/sub-agents) est un assistant séparé, avec ses propres instructions et sa propre fenêtre de contexte, que Claude peut déléguer une tâche et obtenir un résultat. Chaque fichier Markdown sous `agents/` en définit un : le frontmatter le nomme et dit quand l'utiliser, et le corps est son invite système. Celui-ci est nommé `my-plugin:security-reviewer`, et l'utilisateur peut l'invoquer avec `@agent-my-plugin:security-reviewer` :

476 

477 ```markdown theme={null}

478 ---

479 name: security-reviewer

480 description: Reviews code changes for security issues. Use after edits to authentication or input handling.

481 model: sonnet

482 ---

483 

484 You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

485 ```

486 </Piece>

487 

488 <Piece id="hooks">

489 Un [hook](/docs/fr/hooks-guide) exécute quelque chose automatiquement à un point du cycle de vie de Claude Code, comme après chaque édition de fichier : une commande shell, une requête HTTP, un appel d'outil MCP, une invite à un modèle, ou un sous-agent. Enregistrez les hooks du plugin dans `hooks/hooks.json` à la racine du plugin. Celui-ci exécute le `scripts/format.sh` du plugin après que Claude écrit ou édite un fichier :

490 

491 ```json theme={null}

492 {

493 "hooks": {

494 "PostToolUse": [

495 {

496 "matcher": "Write|Edit",

497 "hooks": [

498 {

499 "type": "command",

500 "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/format.sh\""

501 }

502 ]

503 }

504 ]

505 }

506 }

507 ```

508 </Piece>

509 

510 <Piece id="monitors">

511 Un moniteur est une commande shell que Claude Code démarre en arrière-plan quand la session démarre et continue à exécuter jusqu'à ce qu'elle se termine, en utilisant l'[outil Monitor](/docs/fr/tools-reference#monitor-tool). Ce qu'il imprime atteint Claude comme des notifications. Un champ `when` peut à la place le démarrer la première fois qu'une skill nommée s'exécute. Celui-ci suit un journal d'erreurs :

512 

513 ```json theme={null}

514 [

515 {

516 "name": "error-log",

517 "command": "tail -F ./logs/error.log",

518 "description": "Application error log"

519 }

520 ]

521 ```

522 </Piece>

523 

524 <Piece id="output-styles">

525 Un plugin peut inclure des [styles de sortie](/docs/fr/output-styles), qui changent la façon dont Claude formate et formule ses réponses. Enregistrez chaque style de sortie comme `output-styles/<name>.md`. Celui-ci apparaît dans `/output-style` comme `my-plugin:terse` :

526 

527 ```markdown theme={null}

528 ---

529 name: terse

530 description: Answer in as few words as possible

531 keep-coding-instructions: true

532 ---

533 

534 Keep every reply short. Skip preambles and summaries.

535 ```

536 </Piece>

537 

538 <Piece id="themes">

539 Un plugin peut inclure des [thèmes de couleur](/docs/fr/terminal-config#create-a-custom-theme) pour l'interface Claude Code. Enregistrez chaque thème comme `themes/<slug>.json`. Celui-ci apparaît dans `/theme` comme `Dracula`, marqué comme provenant de `my-plugin` :

540 

541 ```json theme={null}

542 {

543 "name": "Dracula",

544 "base": "dark",

545 "overrides": {

546 "claude": "#bd93f9",

547 "error": "#ff5555"

548 }

549 }

550 ```

551 </Piece>

552 

553 <Piece id="workflows">

554 Le dossier `workflows/` contient des fichiers [workflow](/docs/fr/workflows) `.js` : un bloc `meta`, puis un corps de script qui orchestre plusieurs sous-agents. Celui-ci s'exécute comme `/my-plugin:audit-routes` :

555 

556 ```javascript theme={null}

557 export const meta = {

558 name: 'audit-routes',

559 description: 'Audit every route handler for missing auth checks',

560 }

561 

562 const found = await agent('List every .ts file under src/routes/.', {

563 schema: { type: 'object', required: ['files'], properties: { files: { type: 'array', items: { type: 'string' } } } },

564 })

565 

566 const audits = await pipeline(found.files, file =>

567 agent(`Audit ${file} for missing authentication checks.`, { label: file }),

568 )

569 

570 return audits.filter(Boolean)

571 ```

572 </Piece>

573 

574 <Piece id="bin">

575 `bin/` est la façon dont un plugin expédie un outil en ligne de commande. Tant que le plugin est activé, Claude Code met ce dossier sur le `PATH` du shell dans lequel il exécute les commandes, donc Claude, ou les instructions d'une skill, peuvent exécuter l'outil par nom sans que l'utilisateur n'installe rien. Avec cet [exécutable](#executables) en place, `hello-plugin` est une commande que Claude peut exécuter :

576 

577 ```bash theme={null}

578 #!/bin/bash

579 echo "hello from my-plugin"

580 ```

581 </Piece>

582 

583 <Piece id="scripts">

584 Le hook dans `hooks/hooks.json` exécute un script, et ce dossier est l'endroit où l'exemple le garde. Le nom `scripts/` est une convention, pas quelque chose que Claude Code recherche : le hook pointe vers le fichier par son chemin, `${CLAUDE_PLUGIN_ROOT}/scripts/format.sh`. Un script de formatage pourrait ressembler à ceci :

585 

586 ```bash theme={null}

587 #!/bin/bash

588 npx prettier --write .

589 ```

590 </Piece>

591 

592 <Piece id="settings">

593 Un `settings.json` à la racine du plugin contient des [paramètres](/docs/fr/settings-reference) qui s'appliquent tant que le plugin est activé, donc un plugin peut changer le comportement de la session et non seulement ajouter des composants. Seules deux clés prennent effet à partir d'un plugin, [`agent`](/docs/fr/settings-reference#agent) et [`subagentStatusLine`](/docs/fr/settings-reference#subagentstatusline) ; toute autre clé est supprimée. Consultez [Paramètres par défaut](#default-settings).

594 

595 Celui-ci définit `agent`, qui exécute le fil principal de la session comme le propre agent `security-reviewer` du plugin, donc l'invite système, les restrictions d'outils et le modèle de cet agent s'appliquent à toute la session :

596 

597 ```json theme={null}

598 {

599 "agent": "security-reviewer"

600 }

601 ```

602 </Piece>

603 

604 <Piece id="mcp">

605 Un [serveur MCP](/docs/fr/mcp) donne à Claude des outils d'un système externe. Déclarez-le dans `.mcp.json` à la racine du plugin. Celui-ci démarre un serveur local à partir d'un script à l'intérieur du plugin, et apparaît dans `/mcp` comme `plugin:my-plugin:db` :

606 

607 ```json theme={null}

608 {

609 "mcpServers": {

610 "db": {

611 "command": "node",

612 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"]

613 }

614 }

615 }

616 ```

617 </Piece>

618 

619 <Piece id="lsp">

620 Un serveur LSP donne à Claude des [diagnostics et une navigation de code](/docs/fr/plugins/code-intelligence) pour une langue. Déclarez le serveur dans `.lsp.json` à la racine du plugin. Celui-ci connecte le serveur de langage Go pour les fichiers `.go` :

621 

622 ```json theme={null}

623 {

624 "gopls": {

625 "command": "gopls",

626 "args": ["serve"],

627 "extensionToLanguage": {

628 ".go": "go"

629 }

630 }

631 }

632 ```

633 </Piece>

634</PluginExplorer>

635 

636<h2 id="add-each-kind-of-component">

637 Ajouter chaque type de composant

638</h2>

639 

640Chaque section ci-dessous couvre un type de composant : où ses fichiers vont dans le plugin, un exemple qui valide, ce que l'utilisateur voit une fois que le plugin charge, et la clé de manifeste qui change l'emplacement par défaut. Ajoutez ceux dont votre plugin a besoin ; aucun n'est requis.

641 

642<h3 id="skills">

643 Skills

644</h3>

645 

646Une [skill](/docs/fr/skills) est un fichier `SKILL.md` que Claude peut charger quand sa description correspond à la tâche. L'utilisateur peut aussi l'exécuter comme une commande. Enregistrez chaque skill dans son propre répertoire sous `skills/` :

647 

648```text theme={null}

649my-plugin/

650├── .claude-plugin/

651│ └── plugin.json

652└── skills/

653 └── review/

654 └── SKILL.md

655```

656 

657Donnez au `SKILL.md` une `description` pour que Claude sache quand l'utiliser :

658 

659```markdown skills/review/SKILL.md theme={null}

660---

661description: Reviews a pull request for style and test coverage. Use when asked to review code.

662---

663 

664Review the changed files. Report style problems first, then missing tests.

665```

666 

667Après avoir chargé le plugin, `/my-plugin:review` exécute la skill. Le nom de la commande et qui peut l'invoquer suivent ces règles :

668 

669* **Nom de la commande** : `/<plugin>:<directory>`, donc `skills/review/SKILL.md` dans `my-plugin` est `/my-plugin:review`. Si vous définissez `name` dans le frontmatter, il remplace le dernier segment et le préfixe du plugin reste. Consultez [comment une skill obtient son nom de commande](/docs/fr/skills#how-a-skill-gets-its-command-name)

670* **Qui l'invoque** : Claude, l'utilisateur, ou les deux, contrôlé par le frontmatter. Consultez [Contrôler qui invoque une skill](/docs/fr/skills#control-who-invokes-a-skill)

671 

672Vous pouvez aussi placer des skills en dehors du répertoire par défaut `skills/` :

673 

674* **Répertoires supplémentaires** : listez-les dans la clé de manifeste `skills`. Ils s'ajoutent au scan `skills/` par défaut plutôt que de le remplacer, contrairement à `commands` et `agents`

675* **Une seule skill à la racine du plugin** : sans répertoire `skills/` et sans clé de manifeste `skills`, un `SKILL.md` à la racine du plugin charge comme une skill. Définissez `name` dans son frontmatter, car sinon une installation marketplace nomme la skill d'après son [répertoire de cache](/docs/fr/plugins/loading#find-plugins-on-disk) plutôt que votre plugin

676 

677Pour inclure des instructions dans un plugin, écrivez-les comme une skill. Claude Code ne charge pas un `CLAUDE.md` à la racine du plugin, et `claude plugin validate` avertit `CLAUDE.md at the plugin root is not loaded as project context`.

678 

679Pour les champs de frontmatter et les fichiers de support, consultez [Skills](/docs/fr/skills).

680 

681<h3 id="commands">

682 Commandes

683</h3>

684 

685Une commande est un seul fichier Markdown que l'utilisateur exécute par nom, comme `/my-plugin:about`.

686 

687<Note>

688 Les commandes sont le format plus ancien, et les [skills](#skills) les remplacent pour les nouveaux travaux. Une skill s'exécute par nom de la même manière, et elle peut aussi porter des fichiers de support dans son répertoire. Gardez `commands/` pour les fichiers que vous migrez depuis `.claude/commands/`.

689</Note>

690 

691Enregistrez une commande à `commands/<file>.md` et elle devient `/<plugin>:<file>`. Un sous-répertoire ajoute un segment, donc `commands/db/migrate.md` est `/my-plugin:db:migrate`.

692 

693Les fichiers de commande prennent le même frontmatter que les skills.

694 

695<h4 id="define-commands-in-the-manifest">

696 Définir les commandes dans le manifeste

697</h4>

698 

699Vous n'en avez besoin que si vous voulez garder les fichiers de commande quelque part d'autre que `commands/`, ou pour définir une commande courte dans `plugin.json` sans fichier Markdown séparé. Définissez la clé de manifeste `commands`, et Claude Code la lit à la place de scanner `commands/`. La clé prend un chemin, un tableau de chemins, ou un objet qui mappe chaque nom de commande à soit un fichier `source` soit un `content` en ligne.

700 

701Ce manifeste définit `/my-plugin:about` en ligne, sans fichier Markdown :

702 

703```json .claude-plugin/plugin.json theme={null}

704{

705 "name": "my-plugin",

706 "commands": {

707 "about": {

708 "content": "Summarize what this repository does in three sentences.",

709 "description": "Summarize the repository"

710 }

711 }

712}

713```

714 

715Chargez le plugin et exécutez `/my-plugin:about` dans la session pour confirmer qu'il a chargé.

716 

717Pour la syntaxe complète de la clé, consultez [`commands`](/docs/fr/plugins/manifest-reference#commands).

718 

719<h3 id="agents">

720 Agents

721</h3>

722 

723Un [sous-agent](/docs/fr/sub-agents) est un assistant séparé, avec ses propres instructions et fenêtre de contexte, que Claude peut déléguer une tâche. Chaque fichier Markdown sous `agents/` en définit un :

724 

725```markdown agents/security-reviewer.md theme={null}

726---

727name: security-reviewer

728description: Reviews code changes for security issues. Use after edits to authentication or input handling.

729model: sonnet

730---

731 

732You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

733```

734 

735Cet agent est nommé `my-plugin:security-reviewer`, et l'utilisateur peut l'[invoquer explicitement](/docs/fr/sub-agents#invoke-subagents-explicitly) avec `@agent-my-plugin:security-reviewer`. La forme du nom est `<plugin>:<name>`, où `<name>` provient du frontmatter, ou du nom du fichier quand il n'y en a pas.

736 

737La clé de manifeste `agents` remplace le scan `agents/`.

738 

739<h4 id="organize-agents-in-subfolders">

740 Organiser les agents dans des sous-dossiers

741</h4>

742 

743Vous pouvez mettre les fichiers d'agent du plugin dans des sous-dossiers de `agents/`. Claude Code les [charge récursivement](/docs/fr/sub-agents#choose-the-subagent-scope) et joint le nom du plugin, chaque nom de sous-dossier, et le nom du fichier avec des deux-points pour former le nom d'agent scopé. Par exemple, `agents/review/security.md` dans un plugin nommé `my-plugin` charge comme `my-plugin:review:security`. Deux paramètres changent ce nom :

744 

745* Frontmatter `name` : il remplace seulement le nom du fichier, donc `name: audit` dans `agents/review/security.md` charge comme `my-plugin:review:audit`

746* Champ de manifeste [`agents`](/docs/fr/plugins/manifest-reference#fields) : un fichier que vous listez là charge sans noms de sous-dossier, donc `"agents": "./custom/review/security.md"` charge comme `my-plugin:security`

747 

748<h4 id="frontmatter-fields-in-plugin-agents">

749 Champs de frontmatter dans les agents du plugin

750</h4>

751 

752Le frontmatter d'un agent du plugin suit ces règles :

753 

754* **Champs supportés** : `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color`, et la clé `cacheTtl` de `experimental`. La seule valeur `isolation` valide est `"worktree"`. Consultez [champs de frontmatter supportés](/docs/fr/sub-agents#supported-frontmatter-fields) pour ce que chacun fait

755* **Champs ignorés** : `permissionMode`, `hooks`, `mcpServers`, et `initialPrompt`. Un fichier d'agent ne peut pas ajouter des hooks ou des serveurs MCP par lui-même, donc ajoutez-les comme plugin [hooks](#hooks) et [serveurs MCP](#mcp-servers) à la place

756* **Frontmatter qui ne s'analyse pas** : l'agent charge quand même avec chaque champ ignoré. Il est nommé d'après le fichier, et sa description lit `Agent from my-plugin plugin`. Exécutez [`claude plugin validate`](/docs/fr/plugins/cli-reference#plugin-validate) dans votre shell pour trouver ces fichiers

757 

758Pour ce que chaque champ fait et les règles de précédence, consultez [Sous-agents](/docs/fr/sub-agents#supported-frontmatter-fields).

759 

760<h3 id="hooks">

761 Hooks

762</h3>

763 

764Un [hook](/docs/fr/hooks-guide) exécute quelque chose automatiquement à un point du cycle de vie de Claude Code, comme après chaque édition de fichier : une commande shell, une requête HTTP, un appel d'outil MCP, une invite à un modèle, ou un sous-agent. Enregistrez les hooks du plugin dans `hooks/hooks.json` à la racine du plugin, sous une clé `"hooks"` de niveau supérieur, dans la même forme que l'objet `hooks` dans `settings.json`. Cela vous permet de copier un hook de paramètres existant inchangé.

765 

766Ce hook exécute un script groupé après chaque `Write` ou `Edit` :

767 

768```json hooks/hooks.json theme={null}

769{

770 "hooks": {

771 "PostToolUse": [

772 {

773 "matcher": "Write|Edit",

774 "hooks": [

775 {

776 "type": "command",

777 "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/format.sh\""

778 }

779 ]

780 }

781 ]

782 }

783}

784```

785 

786Enregistrez le script à `scripts/format.sh` et rendez-le exécutable.

787 

788Chargez le plugin et demandez à Claude d'éditer un fichier. Un hook `PostToolUse` qui sort 0 ne montre rien dans la transcription, donc confirmez qu'il a exécuté avec [journalisation de débogage](/docs/fr/hooks#debug-hooks) ou par ce que le script lui-même change.

789 

790Les hooks dans `hooks/hooks.json` et dans la clé de manifeste `hooks` chargent tous les deux. Pour chaque événement et sa charge utile, consultez [Événements de hook](/docs/fr/hooks#hook-events).

791 

792<h4 id="when-plugin-hooks-fire">

793 Quand les hooks du plugin se déclenchent

794</h4>

795 

796Les hooks d'un plugin n'attendent pas qu'une des skills ou commandes du plugin soit utilisée. Claude Code les enregistre quand une session charge le plugin, et ils se déclenchent sur leurs événements à partir de là. Pour limiter quand un hook s'exécute, réduisez son `matcher`.

797 

798Si un hook ne se déclenche jamais, consultez [hooks qui ne se déclenchent pas](/docs/fr/plugins/troubleshooting#failed-to-load-hooks-from-and-hooks-that-dont-fire).

799 

800<h4 id="environment-quoting-and-matching-mcp-tools">

801 Environnement, guillemets et correspondance des outils MCP

802</h4>

803 

804L'environnement du hook, les guillemets de `${CLAUDE_PLUGIN_ROOT}`, et les matchers pour les outils MCP du plugin fonctionnent comme suit :

805 

806* **Environnement** : chaque processus de hook reçoit `CLAUDE_PLUGIN_ROOT` et `CLAUDE_PLUGIN_DATA` dans son environnement, plus `CLAUDE_PLUGIN_OPTION_<KEY>` pour chaque valeur de [configuration utilisateur](#user-configuration), donc votre script peut les lire de là

807* **Guillemets** : quand `command` n'a pas `args`, il s'exécute via un shell, donc enveloppez le chemin `${CLAUDE_PLUGIN_ROOT}` entre guillemets doubles, comme l'exemple `hooks/hooks.json` sous [Hooks](#hooks) le fait, pour garder le chemin développé un mot shell. Quand vous passez `args` à la place, chaque élément est passé comme un argument sans shell et n'a besoin d'aucun guillemet. Consultez [forme exec et forme shell](/docs/fr/hooks#exec-form-and-shell-form)

808* **Correspondance des outils MCP du plugin** : un outil d'un [serveur MCP que ce plugin déclare](#mcp-servers) est nommé `mcp__plugin_<plugin>_<server>__<tool>`, donc écrivez ce nom complet dans le matcher. Un matcher sur le nom du serveur seul ne se déclenche jamais. Consultez [Correspondance des outils MCP](/docs/fr/hooks#match-mcp-tools)

809 

810<h3 id="mcp-servers">

811 Serveurs MCP

812</h3>

813 

814Un serveur MCP donne à Claude des outils d'un système externe. Déclarez-le dans `.mcp.json` à la racine du plugin, dans la même forme qu'un [`.mcp.json` de projet](/docs/fr/mcp#project-scope). Ce `.mcp.json` déclare un serveur nommé `db` :

815 

816```json .mcp.json theme={null}

817{

818 "mcpServers": {

819 "db": {

820 "command": "node",

821 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"]

822 }

823 }

824}

825```

826 

827Vous pouvez aussi omettre le wrapper `mcpServers` et mettre `db` au niveau supérieur du fichier.

828 

829Chargez le plugin et exécutez `/mcp` pour confirmer que le serveur apparaît comme `plugin:my-plugin:db`.

830 

831`claude plugin validate` vérifie `.mcp.json` et signale une entrée de serveur que Claude Code supprimerait au moment du chargement comme une erreur. Nécessite Claude Code v2.1.281 ou ultérieur.

832 

833Pour où une mauvaise entrée s'affiche au moment du chargement, consultez [Serveurs MCP qui ne démarrent pas](/docs/fr/plugins/troubleshooting#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start).

834 

835La clé de manifeste `mcpServers` prend une carte de serveur en ligne, un chemin vers un fichier JSON, ou un tableau de ceux-ci. Quand un serveur de manifeste a le même nom qu'un dans `.mcp.json`, le serveur de manifeste le remplace.

836 

837<h4 id="reach-users-on-claude-ai-and-cowork">

838 Atteindre les utilisateurs sur claude.ai et Cowork

839</h4>

840 

841Un serveur stdio local, comme le serveur `db` sous [Serveurs MCP](#mcp-servers), s'exécute dans Claude Code et dans une session Cowork qui s'exécute sur votre machine dans l'application Claude Desktop, mais pas sur claude.ai. Pour atteindre les utilisateurs là aussi, référencez un serveur distant par son URL `https://`, que claude.ai et Cowork offrent à l'utilisateur comme connecteur.

842 

843<h4 id="server-names-tool-names-and-reloads">

844 Noms de serveur, noms d'outils et rechargements

845</h4>

846 

847Les noms du serveur, la substitution de variables, et le comportement de rechargement suivent ces règles :

848 

849* **Nom du serveur** : `plugin:<plugin>:<server>`, donc le serveur `db` dans `my-plugin` est `plugin:my-plugin:db` dans `/mcp`. Utilisez la même forme pour nommer le serveur dans un hook [`mcp_tool`](/docs/fr/hooks#mcp-tool-hook-fields)

850* **Noms d'outils** : `mcp__plugin_<plugin>_<server>__<tool>`, donc un outil `query` sur ce serveur `db` est `mcp__plugin_my-plugin_db__query`. C'est le nom à utiliser dans les [règles de permission](/docs/fr/permissions) et les [matchers de hook](#hooks)

851* **Substitution** : `${CLAUDE_PLUGIN_ROOT}` et les autres [variables de chemin](#path-variables-and-persistent-data) sont substituées dans `command`, `args`, et `env`. Aucun guillemet n'est nécessaire dans `args`, car chaque élément est passé comme un argument

852* **Rechargement** : quand l'utilisateur exécute `/reload-plugins` et que [le rechargement s'applique](/docs/fr/plugins/cli-reference#reloads-that-change-mcp-tools), un serveur dont la configuration est inchangée garde sa connexion. Un serveur dont la configuration a changé se reconnecte, et un que vous avez supprimé se déconnecte

853 

854<h4 id="include-a-packaged-mcpb-server">

855 Inclure un serveur MCPB emballé

856</h4>

857 

858La clé `mcpServers` accepte aussi un serveur emballé comme un [fichier MCPB](https://github.com/modelcontextprotocol/mcpb), dont l'extension est `.mcpb` ou l'ancienne `.dxt`. Pointez la clé vers le fichier, comme un chemin à l'intérieur du plugin ou une URL `https://` :

859 

860```json .claude-plugin/plugin.json theme={null}

861{

862 "name": "my-plugin",

863 "mcpServers": "./servers/db.mcpb"

864}

865```

866 

867Le serveur prend son nom du `name` dans le manifeste du bundle.

868 

869Pour les transports et l'authentification, consultez [MCP](/docs/fr/mcp#plugin-provided-mcp-servers).

870 

871<h3 id="lsp-servers">

872 Serveurs LSP

873</h3>

874 

875Un serveur LSP donne à Claude des diagnostics et une navigation de code pour une langue. Si un [plugin officiel de code intelligence](/docs/fr/plugins/code-intelligence) couvre déjà votre langue, installez celui-ci à la place d'en écrire un. Sinon, déclarez le serveur dans `.lsp.json` à la racine du plugin :

876 

877```json .lsp.json theme={null}

878{

879 "gopls": {

880 "command": "gopls",

881 "args": ["serve"],

882 "extensionToLanguage": {

883 ".go": "go"

884 }

885 }

886}

887```

888 

889Le fichier mappe chaque nom de serveur directement à sa configuration, sans objet wrapper autour de la carte. `command` est le nom du binaire, avec ses arguments dans `args`. `extensionToLanguage` a besoin d'au moins une extension, chacune commençant par `.`.

890 

891`claude plugin validate` ne lit pas ce fichier. Quand une entrée est invalide, le fichier entier est ignoré au chargement et `Invalid LSP server config for ".lsp.json"` apparaît dans l'onglet **Errors** de `/plugin`.

892 

893Votre plugin configure la connexion mais n'installe pas le binaire du serveur, et chaque extension de fichier obtient un serveur :

894 

895* **Binaire manquant** : Claude Code démarre `command` par nom depuis le `PATH` de l'utilisateur. Quand le binaire n'est pas là, le serveur échoue à démarrer et `claude --debug` enregistre `LSP server <name> failed to start`

896* **Conflits d'extension** : quand deux serveurs activés revendiquent la même extension, le premier enregistré gère ces fichiers et l'autre n'est pas utilisé pour eux, que les serveurs proviennent d'un plugin ou de deux. L'onglet **Errors** de `/plugin` montre l'avertissement `LSP server "<name>" is not used for <ext> files`

897 

898La clé de manifeste `lspServers` prend la même carte en ligne, un chemin vers un fichier JSON, ou un tableau de ceux-ci, et ses serveurs s'ajoutent à ceux dans `.lsp.json`. Quand un serveur de manifeste a le même nom qu'un dans `.lsp.json`, le serveur de manifeste le remplace.

899 

900Pour `transport`, les délais d'attente, les redémarrages, et les autres champs, consultez [`lspServers`](/docs/fr/plugins/manifest-reference#lspservers).

901 

902Envoyez la sortie du journal à stderr, pas stdout. Claude Code lit le stdout d'un serveur comme des messages de protocole seulement, et accepte les en-têtes de message jusqu'à 64 KiB et un corps de message jusqu'à 32 MiB.

903 

904Claude Code déconnecte un serveur qui dépasse l'une ou l'autre limite ou écrit une sortie non-protocole à stdout, et compte la déconnexion comme un crash pour `restartOnCrash` et `maxRestarts`. Quand vous exécutez avec `--debug`, Claude Code écrit une erreur nommant la cause au journal de débogage.

905 

906<h3 id="executables">

907 Exécutables

908</h3>

909 

910Les fichiers dans `bin/` à la racine du plugin sont sur le `PATH` du shell de l'outil Bash tant que le plugin est activé, donc Claude peut les exécuter comme des commandes nues. Ajoutez un script exécutable :

911 

912```bash bin/hello-plugin theme={null}

913#!/bin/bash

914echo "hello from my-plugin"

915```

916 

917Rendez-le exécutable avec `chmod +x bin/hello-plugin` et chargez le plugin. Quand vous demandez à Claude d'exécuter `hello-plugin`, le résultat de l'outil Bash montre la sortie du script.

918 

919Les répertoires `bin/` du plugin viennent après les entrées `PATH` de l'utilisateur, donc un plugin ne peut pas masquer `git`, `ls`, ou une autre commande système.

920 

921claude.ai et Cowork n'installent pas un plugin qui a un répertoire `bin/` de niveau supérieur, y compris un que vous [distribuez via les paramètres d'organisation claude.ai](/docs/fr/plugins/host-marketplace#distribute-through-organization-settings).

922 

923<h3 id="default-settings">

924 Paramètres par défaut

925</h3>

926 

927Pour définir les paramètres par défaut qui s'appliquent tant que le plugin est activé, ajoutez un `settings.json` à la racine du plugin, ou mettez le même objet en ligne dans la clé de manifeste `settings`. Deux clés prennent effet, `agent` et `subagentStatusLine`, et toute autre clé est supprimée.

928 

929Définissez `agent` pour exécuter l'un des propres agents du plugin comme le fil principal :

930 

931```json settings.json theme={null}

932{

933 "agent": "security-reviewer"

934}

935```

936 

937Chargez le plugin et démarrez une session. Claude répond alors dans la conversation principale avec l'invite système et le modèle de l'agent `security-reviewer`.

938 

939Pour tout ce que la clé contrôle, consultez le [paramètre `agent`](/docs/fr/settings-reference#agent).

940 

941Quand la même clé est définie à plus d'un endroit, ces règles décident quelle valeur s'applique :

942 

943* **Fichier sur manifeste** : quand les deux existent et `settings.json` définit au moins une clé supportée, `settings.json` s'applique et le `settings` du manifeste est ignoré

944* **Paramètres utilisateur sur paramètres par défaut du plugin** : dans les sources de paramètres, les paramètres par défaut du plugin sont la couche la plus basse, donc un `agent` personnel de l'utilisateur dans `~/.claude/settings.json` remplace le vôtre

945* **Deux plugins définissent la même clé** : la valeur du plugin chargé en dernier s'applique, et `claude --debug` enregistre `overrides setting`

946 

947Pour la forme `subagentStatusLine`, consultez [lignes d'état du sous-agent](/docs/fr/statusline#subagent-status-lines).

948 

949<h3 id="themes-and-output-styles">

950 Thèmes et styles de sortie

951</h3>

952 

953Un plugin peut inclure des thèmes de couleur et des styles de sortie. Les deux apparaissent dans les mêmes sélecteurs que ceux de l'utilisateur. Pour l'un ou l'autre, définir la clé de manifeste remplace le scan de dossier.

954 

955| Composant | Enregistrer comme | Format | Apparaît dans | Clé de manifeste |

956| :-------------- | :------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- | :-------------------- |

957| Thème | `themes/<slug>.json` | Le format de [fichier de thème personnalisé](/docs/fr/terminal-config#create-a-custom-theme) que les utilisateurs écrivent dans `~/.claude/themes/` | `/theme`, sous le `name` du fichier | `experimental.themes` |

958| Style de sortie | `output-styles/<name>.md` | Le format de [style de sortie personnalisé](/docs/fr/output-styles#create-a-custom-output-style), avec le frontmatter `name` et `description` | `/output-style`, comme `<plugin>:<name>` | `outputStyles` |

959 

960Les thèmes du plugin sont en lecture seule, donc quand un utilisateur en édite un dans `/theme`, l'édition est enregistrée comme une copie dans son propre répertoire de thèmes.

961 

962Ce thème recolore l'accent d'invite et le texte d'erreur sur le préréglage sombre :

963 

964```json themes/dracula.json theme={null}

965{

966 "name": "Dracula",

967 "base": "dark",

968 "overrides": {

969 "claude": "#bd93f9",

970 "error": "#ff5555"

971 }

972}

973```

974 

975<h3 id="channels">

976 Canaux

977</h3>

978 

979Un [canal](/docs/fr/channels) permet à un système externe tel qu'une application de chat d'envoyer des messages dans une session. Dans un plugin, un canal est l'un des serveurs MCP plus une entrée `channels` qui se lie à lui et peut demander sa propre configuration. Ce manifeste lie un canal à un serveur `telegram` et demande un jeton de bot :

980 

981```json .claude-plugin/plugin.json theme={null}

982{

983 "name": "my-plugin",

984 "mcpServers": {

985 "telegram": {

986 "command": "node",

987 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

988 "env": { "BOT_TOKEN": "${user_config.bot_token}" }

989 }

990 },

991 "channels": [

992 {

993 "server": "telegram",

994 "userConfig": {

995 "bot_token": {

996 "type": "string",

997 "title": "Bot token",

998 "description": "Telegram bot token",

999 "sensitive": true

1000 }

1001 }

1002 }

1003 ]

1004}

1005```

1006 

1007`server` doit correspondre à une clé dans `mcpServers`. Le `userConfig` par canal prend la même forme que la clé [`userConfig`](#user-configuration) de niveau supérieur.

1008 

1009Pour ce que le serveur doit implémenter et comment les utilisateurs activent un plugin de canal, consultez [Empaqueter comme un plugin](/docs/fr/channels-reference#package-as-a-plugin) dans la référence des canaux. Pour le tableau des champs, consultez [`channels`](/docs/fr/plugins/manifest-reference#channels).

1010 

1011<h3 id="monitors">

1012 Moniteurs

1013</h3>

1014 

1015Un moniteur est une commande shell qui s'exécute en arrière-plan pour toute la session. Ce qu'il imprime atteint Claude comme des notifications, donc Claude peut réagir à un journal ou à un changement d'état sans être demandé de le surveiller. Enregistrez les entrées dans `monitors/monitors.json` :

1016 

1017```json monitors/monitors.json theme={null}

1018[

1019 {

1020 "name": "error-log",

1021 "command": "tail -F ./logs/error.log",

1022 "description": "Application error log"

1023 }

1024]

1025```

1026 

1027La commande s'exécute dans un shell, dans le répertoire de travail dans lequel la session a démarré.

1028 

1029La commande d'un moniteur est limitée dans où elle démarre et ce qu'elle peut référencer :

1030 

1031* **Sessions interactives seulement** : les moniteurs du plugin démarrent dans une session interactive et jamais en mode non-interactif avec le drapeau `-p`. Ils démarrent aussi seulement où l'[outil Monitor](/docs/fr/tools-reference#monitor-tool) est disponible

1032* **Pas de configuration utilisateur** : `command` obtient les [variables de chemin](#path-variables-and-persistent-data) et `${ENV_VAR}` de l'environnement, mais jamais `${user_config.*}`. Un moniteur qui en référence un ne démarre pas, et les processus de moniteur ne reçoivent pas non plus `CLAUDE_PLUGIN_OPTION_<KEY>`

1033* **Désactivation en cours de session** : si vous désactivez un plugin en cours de session, Claude Code n'arrête pas les moniteurs qui s'exécutent déjà. Ils s'arrêtent quand la session se termine

1034 

1035La clé de manifeste `experimental.monitors` prend le même tableau en ligne ou un chemin vers un fichier JSON, et est lue à la place de `monitors/monitors.json`.

1036 

1037Pour le déclencheur `when` et les autres champs, consultez [`monitors`](/docs/fr/plugins/manifest-reference#monitors).

1038 

1039<h2 id="user-configuration">

1040 Demander à l'utilisateur des valeurs de configuration

1041</h2>

1042 

1043Déclarez les valeurs dont votre plugin a besoin de l'utilisateur dans la clé de manifeste `userConfig`, pour que les utilisateurs ne modifient pas `settings.json` eux-mêmes. Chaque option apparaît dans une boîte de dialogue avec son `title` comme étiquette et sa `description` en dessous.

1044 

1045Définissez `"sensitive": true` pour un jeton ou un mot de passe. La boîte de dialogue masque alors l'entrée, et la valeur est stockée dans un stockage sécurisé plutôt que dans `settings.json`.

1046 

1047Ce manifeste demande un point de terminaison et un jeton :

1048 

1049```json .claude-plugin/plugin.json theme={null}

1050{

1051 "name": "my-plugin",

1052 "userConfig": {

1053 "api_url": {

1054 "type": "string",

1055 "title": "API URL",

1056 "description": "Base URL of your team's API"

1057 },

1058 "api_token": {

1059 "type": "string",

1060 "title": "API token",

1061 "description": "Token for your team's API",

1062 "sensitive": true

1063 }

1064 }

1065}

1066```

1067 

1068<h3 id="when-the-configuration-dialog-appears">

1069 Quand la boîte de dialogue de configuration apparaît

1070</h3>

1071 

1072La boîte de dialogue n'apparaît que dans l'interface interactive `/plugin`. Elle s'ouvre pour toute option qui n'est pas encore définie quand l'utilisateur fait l'une des choses suivantes :

1073 

1074* Installe le plugin dans `/plugin`

1075* Exécute `/plugin install <plugin>@<marketplace>` à l'intérieur d'une session

1076* Active le plugin à partir de l'onglet **Installed** dans `/plugin`

1077 

1078Pour ouvrir la même boîte de dialogue à tout moment, l'utilisateur exécute `/plugin configure <plugin>@<marketplace>`.

1079 

1080La commande shell `claude plugin install` ne demande jamais les valeurs `userConfig`. Pour définir les valeurs à partir du shell, passez chacune comme `--config KEY=VALUE`. Quand les options restent non définies, la commande imprime une ligne `userConfig options not yet set` qui nomme les deux façons de les définir. [La boîte de dialogue `userConfig` ne s'affiche jamais](/docs/fr/plugins/troubleshooting#the-userconfig-dialog-never-appears) cite la ligne.

1081 

1082Pour les champs d'option, où chaque valeur est stockée, comment un composant référence une valeur enregistrée, et quels champs rejettent `${user_config.*}`, consultez [Configuration utilisateur](/docs/fr/plugins/manifest-reference#user-configuration).

1083 

1084<h2 id="path-variables-and-persistent-data">

1085 Référencer les chemins du plugin et stocker les données

1086</h2>

1087 

1088Vous ne savez pas où votre plugin sera installé, donc référencez ses fichiers et données via ces variables plutôt que des chemins fixes. Ils sont substitués dans le contenu des skills, commandes et agents, dans les commandes des hooks et moniteurs, et dans les configurations des serveurs MCP et LSP. Ils sont aussi exportés aux processus des hooks, MCP et LSP :

1089 

1090* **`${CLAUDE_PLUGIN_ROOT}`** : le répertoire d'installation du plugin. Chaque version a son propre [répertoire de cache](/docs/fr/plugins/loading#find-plugins-on-disk), donc le chemin change quand le plugin se met à jour. N'écrivez pas d'état là

1091* **`${CLAUDE_PLUGIN_DATA}`** : un répertoire qui survit aux mises à jour, pour `node_modules`, les environnements virtuels, et les caches. Il se résout en `~/.claude/plugins/data/<id>/` et est créé quand d'abord référencé

1092* **`${CLAUDE_PROJECT_DIR}`** : la racine du projet, la même valeur que les hooks reçoivent

1093 

1094Dans le chemin du répertoire de données, `<id>` est l'identifiant du plugin avec chaque caractère autre que les lettres, les chiffres, `_`, et `-` remplacé par `-`, donc `my-plugin@my-marketplace` devient `my-plugin-my-marketplace`.

1095 

1096Sur Windows, les chemins substitués utilisent des barres obliques avant pour qu'un shell ne lise pas les barres obliques arrière comme des échappements.

1097 

1098<h3 id="install-dependencies-into-the-data-directory">

1099 Installer les dépendances dans le répertoire de données

1100</h3>

1101 

1102Pour un plugin installé depuis la marketplace, Claude Code installe automatiquement les [dépendances de package Node.js](/docs/fr/plugins/loading#node-js-package-dependencies) éligibles quand il met en cache le plugin, donc vous n'aurez peut-être pas besoin de les installer vous-même. Quand vous le faites, ce hook `SessionStart` installe `node_modules` dans `${CLAUDE_PLUGIN_DATA}` à la première exécution et à nouveau après une mise à jour qui change `package.json` :

1103 

1104```json hooks/hooks.json theme={null}

1105{

1106 "hooks": {

1107 "SessionStart": [

1108 {

1109 "hooks": [

1110 {

1111 "type": "command",

1112 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

1113 }

1114 ]

1115 }

1116 ]

1117 }

1118}

1119```

1120 

1121Après la première session, `~/.claude/plugins/data/<id>/node_modules` existe. Un serveur MCP peut alors définir `NODE_PATH` à `${CLAUDE_PLUGIN_DATA}/node_modules` dans son `env`. Pour quels champs substituent quelle variable, consultez [Variables d'environnement](/docs/fr/plugins/manifest-reference#environment-variables).

1122 

1123<h2 id="next-steps">

1124 Étapes suivantes

1125</h2>

1126 

1127* [Référence du manifeste du plugin](/docs/fr/plugins/manifest-reference) : champs `plugin.json`, règles de chemin, et la disposition standard

1128* [Tester les plugins avec des evals](/docs/fr/plugin-evals) : vérifiez que les composants que vous avez ajoutés changent le comportement de Claude de la façon que vous avez l'intention

1129* [Publier et distribuer un plugin](/docs/fr/plugins/publish) : versionnez le plugin et mettez-le dans une marketplace

1130* [Dépanner les plugins](/docs/fr/plugins/troubleshooting) : quoi faire quand un composant ne charge pas ou qu'un hook ne se déclenche pas

plugins/create.md +424 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Créer un plugin Claude Code

6 

7> Créez votre premier plugin Claude Code à partir d'un répertoire vide, testez-le sans marketplace et convertissez une configuration .claude/ existante.

8 

9Un plugin est un répertoire de skills, d'agents, de hooks et de serveurs MCP, plus un fichier `plugin.json`, appelé le manifeste, qui nomme le plugin. Claude Code charge le répertoire comme une unité, ce qui vous permet de le partager avec vos coéquipiers, de l'installer dans plusieurs projets ou de le publier sur une marketplace.

10 

11Cette page s'adresse aux personnes qui écrivent leurs propres plugins.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Installer le plugin de quelqu'un d'autre** : voir [Installer des plugins](/docs/fr/plugins/install)

17 * **Vous ne savez pas si vous avez besoin d'un plugin** : voir [Décider si vous avez besoin d'un plugin](/docs/fr/plugins/overview#decide-whether-you-need-a-plugin) dans l'aperçu

18 * **Les utilisateurs de votre plugin sont sur claude.ai ou dans Cowork** : le même dossier s'installe là avec un sous-ensemble différent de composants. Voir [Plugins sur claude.ai et dans Cowork](https://claude.com/docs/plugins/overview)

19</Note>

20 

21Commencez par la section qui correspond à ce que vous avez déjà :

22 

23* **Rien encore** : suivez [Créer votre premier plugin](#create-your-first-plugin), puis [Développer sans marketplace](#develop-without-a-marketplace) et [Tester et déboguer](#test-and-debug).

24* **Fichiers sous `.claude/` déjà présents** : faites la procédure pas à pas du premier plugin une fois pour apprendre la disposition, puis suivez [Convertir une configuration `.claude/` existante](#convert-an-existing-claude-setup).

25 

26<h2 id="decide-when-to-use-a-plugin">

27 Décider quand utiliser un plugin

28</h2>

29 

30Les skills, agents, hooks et serveurs MCP fonctionnent tous de manière autonome dans votre projet ou répertoire personnel. Conservez cette configuration autonome tant qu'elle ne concerne qu'un seul projet ou que vous seul. Créez un plugin quand vous voulez partager la configuration avec vos coéquipiers, l'installer dans plusieurs projets ou publier des versions.

31 

32Quand vous déplacez les skills, agents, hooks et configuration MCP autonomes dans un plugin, leur emplacement et leurs noms changent :

33 

34* **Où vont les fichiers** : sous le répertoire propre du plugin, appelé la racine du plugin, comme `skills/`, `agents/`, `hooks/hooks.json` et `.mcp.json`.

35* **Comment ils sont nommés** : les skills et agents du plugin reçoivent le nom du plugin comme préfixe, par exemple `/my-plugin:hello`, de sorte que deux plugins peuvent chacun fournir un skill `hello` sans collision.

36 

37Pour déplacer une configuration existante dans un plugin, voir [Convertir une configuration `.claude/` existante](#convert-an-existing-claude-setup).

38 

39<h2 id="create-your-first-plugin">

40 Créer votre premier plugin

41</h2>

42 

43Dans cette procédure pas à pas, vous créez un plugin dont le seul composant est un skill, un salut, et vous l'exécutez avec `--plugin-dir`, qui charge un plugin pour une session sans l'installer. Un plugin peut contenir n'importe quel mélange de [composants](/docs/fr/plugins/components), tels que des skills, des agents, des hooks et des serveurs MCP, et aucun n'est requis ; un skill est le plus petit exemple qui montre la disposition.

44 

45Vous avez besoin de Claude Code [installé et connecté](/docs/fr/quickstart#step-1-install-claude-code).

46 

47Ouvrez un terminal dans le répertoire où vous voulez conserver le plugin, par exemple `~/projects`, et exécutez les commandes de ces étapes à partir de là. Vous pouvez conserver un plugin n'importe où, car vous passez son chemin à Claude Code quand vous démarrez une session.

48 

49<Steps>

50 <Step title="Créer le répertoire du plugin">

51 Créez le répertoire du plugin, avec un dossier `.claude-plugin/` à l'intérieur pour contenir le manifeste :

52 

53 ```bash theme={null}

54 mkdir -p my-first-plugin/.claude-plugin

55 ```

56 </Step>

57 

58 <Step title="Écrire le manifeste">

59 Le [manifeste](/docs/fr/plugins/manifest-reference) est un fichier JSON nommé `plugin.json` qui indique à Claude Code le nom du plugin et le décrit. Enregistrez celui-ci comme `my-first-plugin/.claude-plugin/plugin.json` :

60 

61 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

62 {

63 "name": "my-first-plugin",

64 "description": "A greeting plugin to learn the basics",

65 "version": "1.0.0",

66 "author": {

67 "name": "Your Name"

68 }

69 }

70 ```

71 

72 Les quatre champs font ceci :

73 

74 * **`name`** : requis. Il identifie le plugin et devient le préfixe sur chaque skill et agent que le plugin fournit. Ne mettez pas d'espaces dedans.

75 * **`description`** : le texte que les utilisateurs voient pour le plugin dans `/plugin`.

76 * **`version`** : optionnel. Le définir maintient les utilisateurs sur cette version jusqu'à ce que vous la changiez ; [Publier une nouvelle version](/docs/fr/plugins/host-marketplace#release-a-new-version) indique quand le définir ou l'omettre.

77 * **`author`** : qui créditer. `name` est requis à l'intérieur ; `email` et `url` sont optionnels.

78 

79 Tous les autres champs sont sur la [référence du manifeste](/docs/fr/plugins/manifest-reference#fields).

80 

81 Seul `plugin.json` va à l'intérieur de `.claude-plugin/`. Le skill que vous ajoutez ensuite va directement sous `my-first-plugin/`, à côté de ce dossier.

82 </Step>

83 

84 <Step title="Ajouter un skill">

85 Le seul composant de ce plugin est un skill. Chaque skill est un répertoire sous `skills/` qui contient un fichier `SKILL.md`. Créez le répertoire du skill :

86 

87 ```bash theme={null}

88 mkdir -p my-first-plugin/skills/hello

89 ```

90 

91 Ensuite, créez `my-first-plugin/skills/hello/SKILL.md` avec ce contenu :

92 

93 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

94 ---

95 name: hello

96 description: Greet the user with a friendly message

97 disable-model-invocation: true

98 ---

99 

100 Greet the user warmly and ask how you can help them today.

101 ```

102 

103 La ligne `disable-model-invocation: true` signifie que Claude n'exécute pas le skill de lui-même, donc seul vous le déclenchez. Supprimez cette ligne d'un skill que vous voulez que Claude exécute de lui-même. La commande du skill combine le nom du plugin et le nom du skill, donc vous exécutez celui-ci comme `/my-first-plugin:hello`. Pour les autres champs du frontmatter, voir la [référence du frontmatter du skill](/docs/fr/skills#frontmatter-reference).

104 </Step>

105 

106 <Step title="Valider le plugin">

107 Vérifiez le manifeste et le frontmatter du skill avant d'exécuter quoi que ce soit :

108 

109 ```bash theme={null}

110 claude plugin validate ./my-first-plugin

111 ```

112 

113 La commande imprime le chemin du manifeste qu'elle a vérifié et `✔ Validation passed`. Si elle imprime `✘ Validation failed` à la place, chaque ligne au-dessus de cette ligne de résultat nomme le champ à corriger. Recherchez chaque message sous [`claude plugin validate` rapporte des erreurs](/docs/fr/plugins/troubleshooting#claude-plugin-validate-reports-errors).

114 </Step>

115 

116 <Step title="Exécuter Claude Code avec le plugin">

117 Démarrez une session avec le plugin chargé :

118 

119 ```bash theme={null}

120 claude --plugin-dir ./my-first-plugin

121 ```

122 

123 Une fois Claude Code démarré, exécutez le skill :

124 

125 ```text theme={null}

126 /my-first-plugin:hello

127 ```

128 

129 Claude répond avec un salut.

130 </Step>

131</Steps>

132 

133Le plugin ne se charge que dans les sessions que vous démarrez avec `--plugin-dir`. Pour continuer à travailler dessus sans le drapeau, ou pour tester une version `.zip`, voir [Développer sans marketplace](#develop-without-a-marketplace).

134 

135<h3 id="share-the-plugin">

136 Partager votre plugin

137</h3>

138 

139Un plugin que vous avez créé avec [Créer votre premier plugin](#create-your-first-plugin) n'existe que sur votre machine. Quand il est prêt pour d'autres personnes, il y a trois façons de le leur faire parvenir :

140 

141* **L'envoyer à quelques personnes directement** : donnez-leur le répertoire du plugin ou un `.zip` de celui-ci, et rien n'a besoin d'être publié. Voir [Partager un plugin sans marketplace](/docs/fr/plugins/publish#share-a-plugin-without-a-marketplace).

142* **Le lister dans votre propre marketplace** : les coéquipiers ajoutent votre marketplace une fois et installent le plugin par nom, et ils reçoivent vos mises à jour. Voir [Publier via votre propre marketplace](/docs/fr/plugins/publish#publish-through-your-own-marketplace).

143* **Le soumettre à la marketplace communautaire d'Anthropic** : une fois qu'il est listé, quiconque ajoute cette marketplace peut l'installer. Voir [Soumettre à la marketplace communautaire](/docs/fr/plugins/publish#submit-to-the-community-marketplace).

144 

145<h3 id="plugin-layout">

146 Disposition du plugin

147</h3>

148 

149Chaque type de [composant](/docs/fr/plugins/components), tel que les skills, agents, hooks et serveurs MCP, va dans un répertoire fixe sous la racine du plugin, qui est le répertoire que vous passez à `--plugin-dir`. Ajoutez uniquement les répertoires que vous utilisez. Pour cliquer dans un répertoire de plugin complet et lire ce que chaque fichier fait, ouvrez l'[explorateur de plugin](/docs/fr/plugins/components#explore-the-plugin-directory).

150 

151Le tableau liste les répertoires par lesquels la plupart des plugins commencent, et la [disposition complète](/docs/fr/plugins/manifest-reference#standard-layout) liste le reste.

152 

153| Emplacement | Contenu |

154| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |

155| `.claude-plugin/plugin.json` | Le manifeste. Quand vous chargez un plugin avec `--plugin-dir` et qu'il n'a pas de manifeste, Claude Code nomme le plugin d'après son répertoire |

156| `skills/` | Un répertoire `<name>/SKILL.md` par skill |

157| `commands/` | Fichiers Markdown plats, la forme plus ancienne des skills. Utilisez `skills/` pour les nouveaux plugins |

158| `agents/` | Un fichier Markdown par sous-agent |

159| `hooks/hooks.json` | Configuration des hooks : une clé `"hooks"` de niveau supérieur dont la valeur a la même forme que `hooks` dans un fichier de paramètres |

160| `.mcp.json` | Définitions du serveur MCP |

161 

162<Warning>

163 Seul `plugin.json` va à l'intérieur de `.claude-plugin/`. Les composants enregistrés là ne se chargent pas.

164 

165 La racine du plugin est le répertoire propre du plugin, pas `~/.claude/` lui-même. Un `.mcp.json` enregistré à `~/.claude/.mcp.json` ne se charge pas.

166</Warning>

167 

168<h2 id="develop-without-a-marketplace">

169 Développer sans marketplace

170</h2>

171 

172Vous n'avez pas besoin d'une [marketplace](/docs/fr/plugins/overview#get-plugins-from-a-marketplace) pour exécuter un plugin que vous écrivez. Chargez-le directement à partir du disque ou d'une URL à la place :

173 

174* [`--plugin-dir`](#load-a-directory-or-archive-for-one-session) : charge un répertoire ou une archive `.zip` pour une session.

175* [`--plugin-url`](#fetch-an-archive-from-a-url-for-one-session) : récupère une archive `.zip` à partir d'une URL pour une session.

176* [`claude plugin init`](#scaffold-a-plugin-that-loads-every-session) : crée un plugin sous `~/.claude/skills/` qui se charge à chaque session.

177 

178Si deux plugins chargés de différentes façons partagent un nom, voir [Conflits de noms](/docs/fr/plugins/loading#name-conflicts) pour savoir lequel Claude Code conserve.

179 

180<h3 id="load-a-directory-or-archive-for-one-session">

181 Charger un plugin pour une session

182</h3>

183 

184Vous pouvez charger un plugin pour une seule session de trois façons : à partir d'un répertoire ou d'une archive `.zip` sur le disque avec `--plugin-dir`, à partir d'une URL avec `--plugin-url`, ou à partir d'une variable d'environnement quand vous ne pouvez pas ajouter un drapeau. Chaque plugin se charge pour cette session uniquement, et rien n'est écrit dans vos paramètres pour celui-ci. Quand vous modifiez les fichiers du plugin pendant la session, exécutez `/reload-plugins` pour charger les modifications.

185 

186<h4 id="from-a-directory-or-zip">

187 À partir d'un répertoire ou `.zip`

188</h4>

189 

190Quand vous démarrez `claude` à partir de votre shell, passez `--plugin-dir` avec le répertoire racine du plugin ou une archive `.zip` de celui-ci. Répétez le drapeau pour charger plusieurs plugins :

191 

192```bash theme={null}

193claude --plugin-dir ./my-first-plugin --plugin-dir ./other-plugin.zip

194```

195 

196<h4 id="load-a-folder-of-plugins">

197 À partir d'un dossier de plugins

198</h4>

199 

200Pour charger plusieurs plugins à partir d'un seul endroit, passez un dossier qui les contient, par exemple `--plugin-dir ./plugins`. Charger un dossier de plugins nécessite Claude Code v2.1.265 ou ultérieur.

201 

202Si le dossier n'a pas de répertoire `.claude-plugin/` et pas de composants de plugin au niveau supérieur, Claude Code le traite comme un dossier de plugins. Chaque sous-dossier immédiat qui a un manifeste `.claude-plugin/plugin.json` se charge alors comme un plugin séparé. Tout le reste dans le dossier est ignoré sans erreur, y compris un sous-dossier qui n'a pas de manifeste. Si un plugin dans le dossier ne se charge pas, vérifiez que son sous-dossier a un `.claude-plugin/plugin.json`.

203 

204Dans une session interactive, vous pouvez également ajouter et supprimer des plugins dans le dossier après le démarrage :

205 

206* Un sous-dossier que vous ajoutez se charge comme un nouveau plugin une fois que son manifeste existe.

207* Quand vous supprimez un sous-dossier, son plugin se décharge.

208 

209Un message apparaît dans la session pour chacun de ces changements. Si charger ou décharger un plugin en milieu de conversation [invaliderait le cache de prompt](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin), le changement est retenu à la place, et le message vous dit d'exécuter `/reload-plugins` pour l'appliquer.

210 

211<h4 id="fetch-an-archive-from-a-url-for-one-session">

212 À partir d'une URL

213</h4>

214 

215Quand vous démarrez `claude` à partir de votre shell, passez `--plugin-url` avec l'adresse d'une archive `.zip`, par exemple un artefact de build que votre CI publie :

216 

217```bash theme={null}

218claude --plugin-url https://example.com/my-first-plugin.zip

219```

220 

221Claude Code télécharge l'archive au démarrage. Pour en charger plusieurs, répétez le drapeau ou passez les URL séparées par des espaces dans un argument entre guillemets.

222 

223Pointez le drapeau uniquement vers des archives que vous contrôlez ou en lesquelles vous avez confiance.

224 

225Si Claude Code ne peut pas récupérer l'archive, ou si l'archive est invalide, il démarre sans le plugin et enregistre une erreur de chargement de plugin que vous pouvez examiner dans l'onglet **Errors** du gestionnaire `/plugin`.

226 

227<h4 id="from-an-environment-variable">

228 À partir d'une variable d'environnement

229</h4>

230 

231Pour charger des plugins dans une session où vous ne pouvez pas ajouter le drapeau `--plugin-dir`, listez leurs chemins absolus dans la variable d'environnement [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/fr/env-vars#variables) à la place. Claude Code charge chaque chemin comme il charge un chemin `--plugin-dir`. Ces plugins se chargent en plus de ceux que vous passez avec `--plugin-dir`. [Les paramètres de projet et locaux ne peuvent pas définir cette variable](/docs/fr/settings-reference#variables-claude-code-ignores-in-env). `CLAUDE_CODE_PLUGIN_DIRS` nécessite Claude Code v2.1.280 ou ultérieur.

232 

233Les paramètres gérés peuvent désactiver `--plugin-dir` et `CLAUDE_CODE_PLUGIN_DIRS`. Voir [Drapeaux qui chargent un plugin pour une session](/docs/fr/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Pour tester un plugin avec un plugin dont il dépend, voir [Tester un plugin et sa dépendance localement](/docs/fr/plugins/dependencies#test-a-plugin-and-its-dependency-locally).

234 

235<h3 id="scaffold-a-plugin-that-loads-every-session">

236 Faire charger un plugin à chaque session

237</h3>

238 

239Votre répertoire de skills personnel est `~/.claude/skills/`. Claude Code charge n'importe quel dossier là qui contient un `.claude-plugin/plugin.json` comme un plugin à chaque session, sans drapeau et sans étape d'installation. `claude plugin init` en crée un pour vous.

240 

241<h4 id="scaffold-the-plugin-with-claude-plugin-init">

242 Créer le plugin avec `claude plugin init`

243</h4>

244 

245`claude plugin init` écrit un plugin de démarrage sous `~/.claude/skills/`. Nécessite Claude Code v2.1.157 ou ultérieur. Créez-en un à partir de votre shell :

246 

247```bash theme={null}

248claude plugin init my-tool

249```

250 

251La commande crée `~/.claude/skills/my-tool/` avec un `.claude-plugin/plugin.json` et un `SKILL.md` racine. Elle imprime `✔ Created plugin "my-tool" at ~/.claude/skills/my-tool` suivi de `It will auto-load next session as my-tool@skills-dir. Run /reload-plugins to load it now.`

252 

253Passez `--with skills` pour que `claude plugin init` crée un skill sous `skills/` pour vous. Les autres valeurs `--with` sont sur la [référence des commandes de plugin](/docs/fr/plugins/cli-reference#plugin-init).

254 

255<h4 id="skill-names-in-a-scaffolded-plugin">

256 Nommer les skills du plugin

257</h4>

258 

259Le skill racine à `~/.claude/skills/my-tool/SKILL.md` est aussi un skill personnel, donc vous l'invoquez comme `/my-tool`, pas `/my-tool:my-tool`. Les skills que vous ajoutez sous `skills/` à l'intérieur du plugin reçoivent le préfixe du nom du plugin, par exemple `/my-tool:example`.

260 

261<h4 id="stop-loading-the-plugin">

262 Arrêter de charger le plugin

263</h4>

264 

265Pour arrêter de charger un plugin créé, supprimez son répertoire, ou exécutez `claude plugin disable my-tool@skills-dir` dans votre shell avec le nom `my-tool@skills-dir` que `claude plugin init` a imprimé. Dans l'ID `my-tool@skills-dir`, `skills-dir` se tient à la place où un nom de marketplace serait, car le plugin se charge à partir de votre répertoire de skills plutôt que d'une marketplace.

266 

267<h4 id="load-a-plugin-for-everyone-in-one-repository">

268 Partager le plugin via un référentiel

269</h4>

270 

271`claude plugin init` écrit le plugin dans votre répertoire de skills personnel à `~/.claude/skills/`, donc il se charge pour vous dans chaque projet. Pour faire charger un plugin pour tout le monde dans un référentiel, créez la même disposition vous-même à `<project>/.claude/skills/<name>/`, y compris son `.claude-plugin/plugin.json`. Voir [Plugins partagés via un référentiel](/docs/fr/plugins/loading#plugins-shared-through-a-repository) pour les conditions sous lesquelles Claude Code le charge.

272 

273<h2 id="test-and-debug">

274 Tester et déboguer

275</h2>

276 

277Quand un changement à votre plugin ne s'affiche pas, travaillez à travers ces vérifications dans l'ordre. Chacune vous dit ce que Claude Code a fait avec le plugin :

278 

2791. Dans votre shell, exécutez `claude plugin validate <path>`. Il vérifie le manifeste et le frontmatter de chaque fichier de skill, agent et command, et quitte avec `0` sur `Validation passed`. Ajoutez `--strict` pour échouer aussi sur les avertissements. Les codes de sortie et la gestion des répertoires sont sur la [référence des commandes de plugin](/docs/fr/plugins/cli-reference#plugin-validate).

2802. Dans la session en cours, exécutez `/reload-plugins` pour appliquer les modifications que vous avez apportées sur le disque. Il imprime une ligne `Reloaded:` avec des comptages. Ensuite, confirmez qu'un skill s'est chargé en tapant sa commande `/plugin-name:skill`, ou en trouvant le plugin dans l'onglet **Installed** de `/plugin`.

2813. Dans la même session, exécutez `/plugin`. L'onglet **Installed** liste votre plugin et, dans les détails du plugin, les composants que Claude Code a trouvés. L'onglet **Errors** liste ce qui n'a pas pu se charger et pourquoi, par exemple un chemin dans votre manifeste qui n'existe pas.

2824. De retour dans votre shell, exécutez `claude plugin list`. Il imprime les plugins de session uniquement et du répertoire de skills dans leurs propres sections avec `Status: ✔ loaded` ou l'erreur de chargement. Pour inclure le plugin que vous développez, passez `--plugin-dir` avec son chemin avant `plugin list`.

283 

284Pour vérifier un serveur MCP, exécutez `/mcp` dans la session pour voir l'état du serveur. Quand le serveur est sain, `/mcp` le liste comme connecté. Si ce n'est pas le cas, voir [Serveurs MCP qui ne démarrent pas](/docs/fr/plugins/troubleshooting#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start).

285 

286Pour vérifier un hook, déclenchez l'événement qu'il correspond. Par exemple, demandez à Claude d'éditer un fichier pour déclencher un hook `PostToolUse`. Ensuite, lisez le [journal de débogage](/docs/fr/hooks#debug-hooks), qui montre quels hooks ont correspondu, leurs codes de sortie et leur sortie.

287 

288Les sections suivantes couvrent les défaillances que vous êtes le plus susceptible de rencontrer lors du développement, et la [page de dépannage](/docs/fr/plugins/troubleshooting#build-a-plugin) a l'entrée complète pour chacune.

289 

290<h3 id="a-component-path-isn’t-found">

291 Un chemin de composant n'est pas trouvé

292</h3>

293 

294L'onglet **Errors** de `/plugin` affiche `<component> path not found: <path>`, par exemple `commands path not found`. Un chemin de composant dans votre manifeste, tel que `commands`, `skills`, `agents` ou `hooks`, ne pointe vers rien. Corrigez le chemin ou créez le répertoire, puis exécutez `/reload-plugins` dans la session. Voir [`commands path not found`](/docs/fr/plugins/troubleshooting#commands-path-not-found).

295 

296<h3 id="plugin-dir-at-a-marketplace-root-doesn’t-load-the-plugins-under-plugins/">

297 `--plugin-dir` à la racine d'une marketplace ne charge pas les plugins sous `plugins/`

298</h3>

299 

300`--plugin-dir` prend le répertoire racine du plugin, celui qui contient `.claude-plugin/plugin.json` et les répertoires de composants tels que `skills/`. Si vous le pointez à la racine d'une marketplace à la place, Claude Code ne lit pas `marketplace.json`, donc un plugin sous `plugins/` ne se charge pas, et vous ne voyez pas d'erreur. Pointez le drapeau vers le dossier d'un plugin, ou ajoutez la marketplace. Voir [l'entrée de dépannage](/docs/fr/plugins/troubleshooting#plugin-dir-loads-a-plugin-with-no-components).

301 

302<h3 id="the-plugin-loads-but-its-skills-are-missing">

303 Le plugin se charge mais ses skills manquent

304</h3>

305 

306Le répertoire `skills/` est à l'intérieur de `.claude-plugin/`, ou une entrée `skills` dans le manifeste pointe vers un fichier. Déplacez `skills/` à la racine du plugin, pointez chaque entrée `skills` vers un répertoire qui contient `SKILL.md`, et exécutez `/reload-plugins` dans la session. Voir [Le plugin se charge mais ses skills manquent](/docs/fr/plugins/troubleshooting#plugin-loads-but-its-skills-are-missing).

307 

308<h3 id="the-userconfig-dialog-never-appears">

309 Le dialogue `userConfig` n'apparaît jamais

310</h3>

311 

312Le dialogue pour les options [`userConfig`](/docs/fr/plugins/components#user-configuration) de votre plugin fait partie de l'installation via `/plugin` dans une session. Charger avec `--plugin-dir` ne l'affiche pas, et `claude plugin install` dans le shell non plus. Avec le plugin chargé, exécutez `/plugin configure <plugin-name>` dans la session pour l'ouvrir. Voir [Le dialogue `userConfig` n'apparaît jamais](/docs/fr/plugins/troubleshooting#the-userconfig-dialog-never-appears).

313 

314<h3 id="check-that-the-plugin-changes-claude’s-behavior">

315 Vérifier que le plugin change le comportement de Claude

316</h3>

317 

318Un plugin qui se charge sans erreurs peut toujours échouer à diriger Claude de la façon que vous avez l'intention. `claude plugin eval`, que vous exécutez dans votre shell, exécute vos cas de test avec et sans le plugin et note la différence. Voir [Tester les plugins avec des evals](/docs/fr/plugin-evals), en commençant par [Créer votre première suite d'eval](/docs/fr/plugin-evals#create-your-first-eval-suite).

319 

320<h2 id="convert-an-existing-claude-setup">

321 Convertir une configuration `.claude/` existante

322</h2>

323 

324Si vous avez déjà des skills, agents ou hooks sous le répertoire `.claude/` d'un projet, vous pouvez les déplacer dans un plugin sans les réécrire.

325 

326Exécutez les commandes de ces étapes à partir de la racine du projet, qui est le répertoire qui contient `.claude/`, car les chemins `cp` sont relatifs à celui-ci.

327 

328<Steps>

329 <Step title="Créer la structure du plugin">

330 Créez le répertoire du plugin et son dossier `.claude-plugin/` à côté de `.claude/`. Vous pouvez déplacer le plugin n'importe où après.

331 

332 ```bash theme={null}

333 mkdir -p my-plugin/.claude-plugin

334 ```

335 

336 Créez `my-plugin/.claude-plugin/plugin.json` :

337 

338 ```json my-plugin/.claude-plugin/plugin.json theme={null}

339 {

340 "name": "my-plugin",

341 "description": "Migrated from standalone configuration",

342 "version": "1.0.0"

343 }

344 ```

345 </Step>

346 

347 <Step title="Copier vos fichiers existants">

348 Copiez chaque répertoire de configuration que vous avez à la racine du plugin, et ignorez la commande pour tout répertoire que vous n'avez pas.

349 

350 ```bash theme={null}

351 cp -r .claude/commands my-plugin/

352 ```

353 

354 ```bash theme={null}

355 cp -r .claude/agents my-plugin/

356 ```

357 

358 ```bash theme={null}

359 cp -r .claude/skills my-plugin/

360 ```

361 

362 Exécutez `ls -a my-plugin` pour confirmer que chaque répertoire que vous avez copié apparaît à côté de `.claude-plugin`.

363 </Step>

364 

365 <Step title="Déplacer vos hooks">

366 Si vous avez des hooks dans `.claude/settings.json` ou `.claude/settings.local.json`, créez un répertoire de hooks :

367 

368 ```bash theme={null}

369 mkdir -p my-plugin/hooks

370 ```

371 

372 Créez `my-plugin/hooks/hooks.json` et copiez l'objet `hooks` de votre fichier de paramètres dedans. Le format est le même.

373 

374 Cet exemple montre la forme avec un hook qui exécute un linter sur chaque fichier que Claude écrit ou édite. Remplacez l'exemple par votre propre objet `hooks`.

375 

376 ```json my-plugin/hooks/hooks.json theme={null}

377 {

378 "hooks": {

379 "PostToolUse": [

380 {

381 "matcher": "Write|Edit",

382 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

383 }

384 ]

385 }

386 }

387 ```

388 </Step>

389 

390 <Step title="Tester le plugin migré">

391 Chargez le plugin pour une session :

392 

393 ```bash theme={null}

394 claude --plugin-dir ./my-plugin

395 ```

396 

397 Vérifiez chaque composant sous son nouveau nom :

398 

399 * **Skills** : exécutez `/my-plugin:deploy` pour un skill qui était `/deploy`.

400 * **Sous-agents** : demandez à Claude d'utiliser l'agent `my-plugin:reviewer` pour un agent qui était `reviewer`.

401 * **Hooks** : déclenchez l'événement que chaque hook correspond.

402 

403 Si quelque chose manque, travaillez à travers [Tester et déboguer](#test-and-debug).

404 </Step>

405</Steps>

406 

407Tant que les originaux sont toujours sous `.claude/`, ils restent chargés à côté des copies du plugin :

408 

409* **Skills et agents** : les deux ensembles ne se heurtent pas, car les skills et agents du plugin portent le préfixe `my-plugin:`. `/deploy` et `/my-plugin:deploy` fonctionnent tous les deux, et Claude voit `reviewer` et `my-plugin:reviewer` comme deux sous-agents.

410* **Hooks** : les hooks n'ont pas de préfixe, donc un hook qui est à la fois dans votre fichier de paramètres et dans `hooks/hooks.json` s'exécute deux fois chaque fois que son événement se déclenche.

411 

412Après avoir confirmé que le plugin fonctionne, supprimez les originaux de `.claude/` et supprimez l'objet `hooks` de votre fichier de paramètres.

413 

414<h2 id="next-steps">

415 Étapes suivantes

416</h2>

417 

418* [Composants de plugin](/docs/fr/plugins/components) : ajoutez des agents, des hooks, des serveurs MCP, des serveurs LSP et une configuration utilisateur à votre plugin

419* [Tester les plugins avec des evals](/docs/fr/plugin-evals) : écrivez des cas d'eval et exécutez-les avec `claude plugin eval` pour vérifier la fiabilité avec laquelle le plugin guide le comportement de Claude

420* [Publier un plugin](/docs/fr/plugins/publish) : versionnez-le, mettez-le dans une marketplace et soumettez-le à la marketplace communautaire

421* [Plugins sur claude.ai et dans Cowork](https://claude.com/docs/plugins/overview) : le même dossier de plugin s'installe sur claude.ai et dans Cowork. Certains composants sont uniquement Claude Code

422* [Référence du manifeste de plugin](/docs/fr/plugins/manifest-reference) : chaque champ `plugin.json`, règle de chemin et répertoire

423* [Skills](/docs/fr/skills) : écrivez les skills que votre plugin fournit

424* [Plugins d'Anthropic dans le référentiel claude-code](https://github.com/anthropics/claude-code/tree/main/plugins) : des exemples complets de la disposition sur cette page, tels que `feature-dev` et `code-review`

plugins/create-marketplace.md +251 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Créer une marketplace

6 

7> Créez une marketplace de plugins à partir d'un fichier marketplace.json et testez-la localement avant de l'héberger.

8 

9Une marketplace de plugins est un répertoire ou un dépôt contenant un fichier `.claude-plugin/marketplace.json` qui répertorie vos plugins et indique où récupérer chacun d'eux. Vous poussez le répertoire vers un hôte git, et toute personne ayant accès l'enregistre dans Claude Code avec une seule commande et installe vos plugins à partir de celui-ci.

10 

11Créez votre propre marketplace lorsque vous souhaitez qu'un groupe que vous choisissez, comme votre équipe ou votre organisation, installe vos plugins et continue à recevoir vos mises à jour à partir d'un catalogue que vous contrôlez. Le dépôt peut être privé, il peut répertorier autant de plugins que vous le souhaitez, et un administrateur peut [l'exiger sur chaque machine](/docs/fr/plugins/org).

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Partager un plugin avec quelques personnes** : envoyez-leur le répertoire du plugin ou un `.zip` de celui-ci. Voir [Partager un plugin sans marketplace](/docs/fr/plugins/publish#share-a-plugin-without-a-marketplace).

17 * **Proposer un plugin à tout le monde** : soumettez-le à la marketplace communautaire d'Anthropic. Voir [Soumettre à la marketplace communautaire](/docs/fr/plugins/publish#submit-to-the-community-marketplace).

18 * **Utiliser un plugin vous-même** : chargez-le avec `--plugin-dir` ou enregistrez-le dans votre répertoire de compétences. Voir [Développer sans marketplace](/docs/fr/plugins/create#develop-without-a-marketplace).

19</Note>

20 

21Commencez par [Créer une marketplace](#create-a-marketplace) pour en construire une sur votre propre machine et installer un plugin à partir de celle-ci, puis [ajoutez d'autres entrées de plugins](#add-plugin-entries).

22 

23<h2 id="create-a-marketplace">

24 Créer une marketplace

25</h2>

26 

27Les étapes suivantes créent une marketplace sur votre machine, ajoutent un plugin à celle-ci, l'enregistrent dans Claude Code et installent le plugin à partir de celle-ci. C'est la boucle complète, et c'est la même boucle que vos utilisateurs parcourent une fois que vous hébergez la marketplace quelque part où ils peuvent y accéder. Exécutez chaque commande dans votre shell, à partir du répertoire où vous souhaitez que `my-marketplace/` soit créé.

28 

29Vous avez besoin d'un plugin à répertorier. L'exemple utilise `my-first-plugin` de [Créer votre premier plugin](/docs/fr/plugins/create#create-your-first-plugin), un plugin avec une compétence que vous exécutez en tant que `/my-first-plugin:hello` ; construisez-le d'abord si vous n'avez pas encore de plugin. Pour utiliser un plugin qui vous appartient à la place, remplacez son répertoire et son `name` partout où les étapes disent `my-first-plugin`. Pour savoir ce qu'un répertoire de plugins peut contenir, voir l'[explorateur de répertoire de plugins](/docs/fr/plugins/components#explore-the-plugin-directory).

30 

31<Steps>

32 <Step title="Configurer le répertoire de la marketplace">

33 Une marketplace est un répertoire avec un fichier `.claude-plugin/marketplace.json`, plus les plugins qu'il répertorie. Créez le répertoire de la marketplace et son dossier `.claude-plugin/`, puis copiez votre plugin sous `plugins/` :

34 

35 ```bash theme={null}

36 mkdir -p my-marketplace/.claude-plugin my-marketplace/plugins

37 cp -r my-first-plugin my-marketplace/plugins/

38 ```

39 

40 Vérifiez que le plugin est valide là où il se trouve maintenant, afin que toute erreur ultérieure concerne la marketplace et non le plugin :

41 

42 ```bash theme={null}

43 claude plugin validate ./my-marketplace/plugins/my-first-plugin

44 ```

45 

46 La dernière ligne de la sortie lit `✔ Validation passed`.

47 </Step>

48 

49 <Step title="Créer le fichier de marketplace">

50 Enregistrez `marketplace.json` à `my-marketplace/.claude-plugin/marketplace.json`. Le fichier nécessite un `name`, un `owner` et un tableau `plugins`.

51 

52 Chaque objet dans `plugins` est une entrée de plugin et a besoin d'un `name` et d'une `source`. Écrivez la `source` de l'entrée comme un chemin à partir de la racine de la marketplace. La racine est `my-marketplace/`, le répertoire qui contient `.claude-plugin/`.

53 

54 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

55 {

56 "name": "my-marketplace",

57 "description": "Plugins for my team",

58 "owner": {

59 "name": "Your Name"

60 },

61 "plugins": [

62 {

63 "name": "my-first-plugin",

64 "source": "./plugins/my-first-plugin",

65 "description": "A greeting plugin to learn the basics"

66 }

67 ]

68 }

69 ```

70 </Step>

71 

72 <Step title="Valider la marketplace">

73 Exécutez `claude plugin validate` sur le répertoire de la marketplace pour vérifier la syntaxe JSON, les champs obligatoires et chaque entrée de plugin dans son `.claude-plugin/marketplace.json`.

74 

75 ```bash theme={null}

76 claude plugin validate ./my-marketplace

77 ```

78 

79 Pour le fichier tel qu'écrit à l'étape 2, la dernière ligne de la sortie lit `✔ Validation passed`.

80 </Step>

81 

82 <Step title="Ajouter la marketplace et installer le plugin">

83 Enregistrez le répertoire en tant que marketplace.

84 

85 ```bash theme={null}

86 claude plugin marketplace add ./my-marketplace

87 ```

88 

89 La commande affiche `✔ Successfully added marketplace: my-marketplace (declared in user settings)`, ce qui signifie que la marketplace est enregistrée dans votre fichier de paramètres utilisateur.

90 

91 Installez le plugin. L'ID d'installation est le `name` de l'entrée, un `@` et le `name` de la marketplace.

92 

93 ```bash theme={null}

94 claude plugin install my-first-plugin@my-marketplace

95 ```

96 

97 La commande affiche `✔ Successfully installed plugin: my-first-plugin@my-marketplace (scope: user)`.

98 

99 À l'intérieur d'une session, `/plugin marketplace add ./my-marketplace` enregistre la marketplace de la même manière. `/plugin install my-first-plugin@my-marketplace` ouvre les détails du plugin dans le panneau `/plugin`, où vous l'installez. Pour ce flux, voir [Installer et gérer les plugins](/docs/fr/plugins/install).

100 </Step>

101 

102 <Step title="Confirmer que le plugin a été chargé">

103 Listez les plugins installés.

104 

105 ```bash theme={null}

106 claude plugin list

107 ```

108 

109 La sortie répertorie `my-first-plugin@my-marketplace` avec `Status: ✔ enabled`.

110 

111 Pour voir ce que le plugin a chargé, affichez ses détails.

112 

113 ```bash theme={null}

114 claude plugin details my-first-plugin

115 ```

116 

117 La section `Component inventory` lit `Skills (1) hello`.

118 

119 Pour exécuter la compétence, démarrez une session et entrez `/my-first-plugin:hello`. Claude vous salue. La commande a le nom du plugin comme préfixe, comme le fait le nom de chaque compétence de plugin.

120 </Step>

121</Steps>

122 

123<h2 id="add-plugin-entries">

124 Ajouter des entrées de plugins

125</h2>

126 

127Chaque plugin que vous distribuez est un objet dans le tableau `plugins` de `marketplace.json`. Pour ajouter un deuxième plugin, ajoutez un deuxième objet. Ces champs couvrent la plupart des entrées :

128 

129* `name` : l'identifiant que les gens tapent avant `@` lorsqu'ils installent. Il ne peut pas contenir d'espaces.

130* `source` : où Claude Code récupère le plugin. Écrivez une chaîne de chemin relatif pour un plugin à l'intérieur du répertoire de la marketplace, comme dans [la procédure pas à pas](#create-a-marketplace), ou un objet source pour un plugin en dehors de celui-ci. Voir [Choisir une source de plugin](#choose-a-plugin-source).

131* `description` : la ligne que les gens voient à côté du plugin lorsqu'ils parcourent votre marketplace dans `/plugin`.

132 

133Pour la liste complète des champs, voir [Entrées de plugins](/docs/fr/plugins/marketplace-reference#plugin-entries).

134 

135Une entrée peut également définir n'importe quel champ [`plugin.json`](/docs/fr/plugins/manifest-reference). Pour savoir quand les champs `plugin.json` d'une entrée s'appliquent à un plugin qui a son propre `plugin.json`, voir [Entrée et plugin.json](/docs/fr/plugins/marketplace-reference#entry-and-plugin-json).

136 

137<h2 id="rules-for-plugin-entries">

138 Règles pour les entrées de plugins

139</h2>

140 

141La plupart des installations échouées à partir d'une nouvelle marketplace proviennent d'un chemin relatif écrit à partir du mauvais répertoire, ou d'un nom d'entrée qui diffère du `name` dans le `plugin.json` du plugin.

142 

143<h3 id="write-relative-paths-from-the-marketplace-root">

144 Écrire les chemins relatifs à partir de la racine de la marketplace

145</h3>

146 

147La racine de la marketplace est le répertoire qui contient `.claude-plugin/`. Dans [la procédure pas à pas](#create-a-marketplace), c'est `my-marketplace/`, donc la `source` de l'entrée est `"./plugins/my-first-plugin"`. Le chemin ne commence pas à l'intérieur de `.claude-plugin/`, donc n'utilisez pas `..` pour le quitter.

148 

149Un chemin avec `..` et un chemin vers un répertoire manquant échouent à des commandes différentes :

150 

151* **Un chemin avec `..`** : `claude plugin validate` signale l'entrée comme invalide. Le message commence par `Path contains "..": ./../plugins/my-first-plugin`.

152* **Un chemin vers un répertoire qui n'existe pas** : `claude plugin validate` réussit. `claude plugin install` échoue avec `Source path does not exist: <path>`, et `<path>` est l'emplacement absolu que Claude Code a vérifié.

153 

154<h3 id="keep-the-entry-name-and-the-manifest-name-the-same">

155 Garder le nom de l'entrée et le nom du manifeste identiques

156</h3>

157 

158Un plugin de marketplace a un `name` d'entrée dans `marketplace.json` et un `name` dans son propre `plugin.json`, appelé le nom du manifeste. Chaque nom apparaît à des endroits différents :

159 

160* **Nom de l'entrée** : l'ID d'installation, `<entry-name>@<marketplace>`. C'est ce que les gens tapent pour installer, ce que `claude plugin list` affiche, et la clé que Claude Code écrit sous [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins) dans leur fichier de paramètres.

161* **Nom du manifeste** : le préfixe sur les compétences du plugin, et le nom que `claude plugin details` prend.

162 

163Lorsque les deux noms diffèrent et que quelqu'un installe par le nom du manifeste, Claude Code signale `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`. Gardez les deux noms identiques. Pour plus d'informations sur la façon dont Claude Code utilise les deux noms, voir [Référence de chargement des plugins](/docs/fr/plugins/loading#find-where-a-plugin-came-from).

164 

165<h2 id="choose-a-plugin-source">

166 Choisir une source de plugin

167</h2>

168 

169Chaque entrée de plugin dans `marketplace.json` a une `source` qui indique à Claude Code où récupérer ce plugin. Choisissez la source en fonction de l'endroit où les fichiers du plugin sont stockés. Le tableau répertorie les sources que la plupart des propriétaires de marketplace utilisent.

170 

171| Source | Utilisez-la quand | Valeur `source` minimale |

172| :------------- | :---------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- |

173| Chemin relatif | Les fichiers du plugin se trouvent à l'intérieur du répertoire de la marketplace lui-même | `"./plugins/my-first-plugin"` |

174| `github` | Le plugin est son propre dépôt GitHub | `{ "source": "github", "repo": "your-org/my-first-plugin" }` |

175| `git-subdir` | Le plugin est un sous-répertoire d'un autre dépôt, comme un monorepo | `{ "source": "git-subdir", "url": "your-org/monorepo", "path": "tools/my-first-plugin" }` |

176 

177Dans une source `git-subdir`, `url` prend une URL git ou un raccourci GitHub `owner/repo`.

178 

179Un plugin peut également provenir de l'un de ces types de source :

180 

181* `url` : un dépôt git par URL, sur n'importe quel hôte

182* `archive` : un fichier zip téléchargé via HTTPS

183* `npm` : un package npm

184* `command` : un répertoire produit en exécutant une commande sur la machine où le plugin est installé

185 

186Pour les champs de chaque type de source, et pour épingler une source basée sur git à une `ref` ou `sha`, voir [Sources de plugins](/docs/fr/plugins/marketplace-reference#plugin-sources).

187 

188<h2 id="validate-and-test">

189 Valider et tester

190</h2>

191 

192À mesure que vous ajoutez des plugins, exécutez `claude plugin validate ./my-marketplace` dans votre shell après chaque modification, et installez à partir de la marketplace sur votre propre machine avant de la partager. La validation et l'installation détectent des problèmes différents.

193 

194<h3 id="problems-that-validation-reports">

195 Problèmes que la validation signale

196</h3>

197 

198`claude plugin validate` lit uniquement les fichiers à l'intérieur du répertoire de la marketplace. Il signale :

199 

200* Les erreurs de syntaxe JSON, comme `json: Invalid JSON syntax: <reason>`

201* Les champs obligatoires manquants, tels que `owner: Invalid input`

202* Un nom de marketplace avec des espaces, des caractères non-ASCII, ou une forme qui imite une marketplace officielle d'Anthropic, comme `claude-official`

203* Une `source` relative qui contient `..`

204* Les champs inconnus au niveau supérieur ou dans une entrée de plugin, comme des avertissements

205* Les problèmes dans le `plugin.json` de chaque plugin à chemin relatif, comme `plugins[N] plugin.json → <field>: <message>`

206 

207Pour chaque message que `validate` peut imprimer, voir [Messages de validation](/docs/fr/plugins/marketplace-reference#validation-messages). Pour ses drapeaux et codes de sortie, voir [`plugin validate`](/docs/fr/plugins/cli-reference#plugin-validate).

208 

209<h3 id="problems-that-surface-when-you-add-or-install">

210 Problèmes qui apparaissent lorsque vous ajoutez ou installez

211</h3>

212 

213Les problèmes que `claude plugin validate` ne signale pas apparaissent lorsque vous ajoutez la marketplace ou installez à partir de celle-ci :

214 

215* **Lorsque vous ajoutez la marketplace** : les [noms de marketplace officiels](/docs/fr/plugins/marketplace-reference#reserved-names) exacts, tels que `claude-plugins-official`, passent la validation. Lorsque vous ajoutez une marketplace avec l'un de ces noms, Claude Code la refuse avec un message qui commence par `The name '<name>' is reserved for official Anthropic marketplaces`.

216* **Lorsque vous installez un plugin** :

217 * Claude Code récupère d'abord une source `github`, `git-subdir` ou autre source distante lorsque vous installez le plugin, donc un `repo` ou `path` incorrect apparaît alors.

218 * Une `source` relative dont le répertoire n'existe pas échoue également à l'installation, avec `Source path does not exist: <path>`.

219 

220<h3 id="test-an-edit-to-a-plugin">

221 Tester une modification d'un plugin

222</h3>

223 

224Dans [la procédure pas à pas](#create-a-marketplace), vous avez ajouté `my-marketplace` à partir d'un répertoire local avec une `source` à chemin relatif. Avec cette configuration, Claude Code lit les fichiers du plugin directement à partir de `my-marketplace/plugins/`. Vos modifications prennent effet au prochain démarrage de session ou lorsque vous exécutez `/reload-plugins` dans une session, sans modification de la `version` du plugin.

225 

226Les personnes qui installent à partir de votre marketplace hébergée obtiennent une copie dans le cache des plugins à la place. Pour savoir comment elles reçoivent une nouvelle version, voir [Garder les utilisateurs à jour](/docs/fr/plugins/host-marketplace#keep-users-up-to-date).

227 

228<h3 id="remove-the-marketplace-to-start-over">

229 Supprimer la marketplace pour recommencer

230</h3>

231 

232Pour tout supprimer et recommencer, exécutez `claude plugin marketplace remove my-marketplace` dans votre shell. La commande supprime la marketplace et désinstalle ses plugins.

233 

234<h2 id="host-your-marketplace">

235 Héberger votre marketplace

236</h2>

237 

238Une fois que vous pouvez installer un plugin à partir de la marketplace sur votre propre machine, comme dans [Créer une marketplace](#create-a-marketplace), poussez le répertoire de la marketplace vers un hôte git.

239 

240Vos coéquipiers exécutent ensuite `claude plugin marketplace add <owner>/<repo>` dans leur shell pour un dépôt GitHub, ou la même commande avec l'URL du dépôt. Ils installent ensuite un plugin par nom comme dans [la procédure pas à pas](#create-a-marketplace).

241 

242Pour l'accès aux dépôts privés, les mises à jour, le versioning, et le renommage ou la suppression d'entrées, voir [Héberger et maintenir une marketplace](/docs/fr/plugins/host-marketplace).

243 

244<h2 id="next-steps">

245 Étapes suivantes

246</h2>

247 

248* [Héberger et maintenir une marketplace](/docs/fr/plugins/host-marketplace) : choisissez un hôte, gardez les utilisateurs à jour, et renommez ou supprimez les plugins en toute sécurité

249* [Référence de marketplace](/docs/fr/plugins/marketplace-reference) : champs `marketplace.json` et types de sources

250* [Gérer les plugins pour votre organisation](/docs/fr/plugins/org) : exigez votre marketplace et ses plugins sur chaque machine

251* [Suggérer les plugins par pertinence](/docs/fr/plugins/relevance) : faites en sorte que Claude Code suggère un plugin de votre marketplace lorsqu'une session correspond

plugins/dependencies.md +245 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Dépendances des plugins

6 

7> Déclarez les plugins dont votre plugin dépend, avec des plages de versions telles que ^1.2, et découvrez comment Claude Code installe, résout et élague les dépendances.

8 

9Une dépendance de plugin est un autre plugin sur lequel votre plugin s'appuie, par exemple celui dont il appelle le serveur MCP ou la compétence. Chaque dépendance suit la dernière version que sa place de marché fournit, sauf si vous déclarez une contrainte de version, une plage de version sémantique telle que `^2.0` ou `~2.1.0` que vous avez testée.

10 

11Cette page s'adresse aux auteurs de plugins qui déclarent des dépendances dans `plugin.json` et aux responsables de la place de marché qui balisent les versions.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Installation d'un plugin qui a des dépendances** : voir [Gérer les plugins installés](/docs/fr/plugins/install#manage-installed-plugins)

17 * **Lecture d'une erreur de dépendance** : voir [Erreurs de dépendance](/docs/fr/plugins/troubleshooting#dependency-errors)

18 * **Déclaration des packages npm et Bun dont le code de votre plugin a besoin** : voir [Dépendances des packages Node.js](/docs/fr/plugins/loading#node-js-package-dependencies)

19</Note>

20 

21Pour ajouter une contrainte, commencez par [Déclarer une dépendance avec une contrainte de version](#declare-a-dependency-with-a-version-constraint). Si vous maintenez un plugin dont d'autres dépendent, [balisez vos versions](#tag-plugin-releases-for-version-resolution) pour que leurs contraintes puissent se résoudre.

22 

23<h2 id="declare-dependencies">

24 Déclarer les dépendances

25</h2>

26 

27<span id="decide-whether-to-constrain-dependency-versions" />Sans contrainte de version, une dépendance se déplace vers chaque nouvelle version que sa place de marché publie la prochaine fois que les utilisateurs mettent à jour. Si cette version renomme un outil MCP que votre plugin appelle, votre plugin se casse pour tous ceux qui mettent à jour.

28 

29Avec une contrainte telle que `~2.1.0` sur une dépendance provenant d'une source sauvegardée par git, les utilisateurs qui ont votre plugin installé continuent à recevoir les correctifs `2.1.x` de la dépendance et ne passent jamais à `2.2`. Pour mettre à niveau selon votre propre calendrier, testez contre une version plus récente, puis publiez une nouvelle version de votre plugin avec une contrainte plus large.

30 

31<h3 id="declare-a-dependency-with-a-version-constraint">

32 Déclarer une dépendance avec une contrainte de version

33</h3>

34 

35Listez les dépendances dans le tableau `dependencies` du fichier `.claude-plugin/plugin.json` de votre plugin. Le manifeste suivant déclare une dépendance sans version et une dépendance avec contrainte :

36 

37```json .claude-plugin/plugin.json theme={null}

38{

39 "name": "deploy-kit",

40 "version": "3.1.0",

41 "dependencies": [

42 "audit-logger",

43 { "name": "secrets-vault", "version": "~2.1.0" }

44 ]

45}

46```

47 

48Une entrée peut être une chaîne : le nom du plugin seul, tel que `"audit-logger"` dans ce manifeste, ou `"name@marketplace"` pour le résoudre dans une autre place de marché. Avec une simple chaîne, votre plugin dépend de la version que la place de marché de ce plugin fournit.

49 

50Pour définir une contrainte de version, utilisez un objet avec ces champs, chacun étant une chaîne :

51 

52| Champ | Description |

53| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

54| `name` | Le nom du plugin de dépendance, tel qu'il apparaît dans son entrée de place de marché. Claude Code le recherche dans la même place de marché que le plugin déclarant, sauf si vous définissez `marketplace`. Obligatoire. |

55| `version` | Une [plage de version sémantique](https://github.com/npm/node-semver#ranges) telle que `~2.1.0`, `^2.0`, `>=1.4`, ou `=2.1.0`. La dépendance s'installe à la balise git la plus élevée qui satisfait cette plage, donc le responsable de la dépendance doit [baliser les versions](#tag-plugin-releases-for-version-resolution). |

56| `marketplace` | Une place de marché différente pour résoudre `name` dedans. Une liste d'autorisation contrôle les dépendances inter-places de marché, décrites dans [Dépendre d'un plugin d'une autre place de marché](#depend-on-a-plugin-from-another-marketplace). |

57 

58Une plage ne correspond pas aux versions de pré-version telles que `2.0.0-beta.1` sauf si vous acceptez avec un suffixe de pré-version tel que `^2.0.0-0`.

59 

60<h3 id="bundle-plugins-for-a-team">

61 Regrouper les plugins pour une équipe

62</h3>

63 

64Pour permettre aux ingénieurs d'installer un ensemble curé de plugins avec une seule commande, publiez un plugin dont le manifeste contient un `name` et un tableau `dependencies`. Un manifeste de plugin n'a besoin que de `name`, c'est donc un plugin valide, et l'installer installe chaque dépendance.

65 

66Par exemple, une équipe de plateforme peut publier des bundles spécifiques aux rôles dans une place de marché interne afin que les ingénieurs exécutent une seule `claude plugin install` au lieu d'installer chaque plugin séparément :

67 

68```json .claude-plugin/plugin.json theme={null}

69{

70 "name": "backend-standard",

71 "version": "1.0.0",

72 "description": "Standard plugin set for backend engineers",

73 "dependencies": [

74 "secrets-vault",

75 "deploy-kit",

76 { "name": "db-migrate", "version": "^3.0" },

77 "oncall-runbook"

78 ]

79}

80```

81 

82Pour ajouter un plugin à l'ensemble standard ultérieurement, publiez une nouvelle version `backend-standard` avec la dépendance supplémentaire. Lorsque la place de marché ne [met pas à jour automatiquement par défaut](/docs/fr/plugins/loading#which-marketplaces-and-plugins-auto-update), les ingénieurs activent soit la mise à jour automatique pour la place de marché, soit mettent à jour manuellement :

83 

84* **Activer la mise à jour automatique pour la place de marché** : la prochaine mise à jour automatique déplace le bundle vers la nouvelle version et installe toutes les dépendances qu'il ajoute.

85* **Mettre à jour manuellement** : exécutez `claude plugin update backend-standard` dans un shell, puis `/reload-plugins` dans une session ouverte pour installer les dépendances nouvellement ajoutées.

86 

87Pour les étapes côté ingénieur, voir [Garder les plugins à jour](/docs/fr/plugins/install#keep-plugins-updated).

88 

89Pour déployer un bundle à tous les membres d'une organisation, un administrateur l'ajoute à `enabledPlugins` dans les paramètres gérés. Voir [Pré-installer et exiger des plugins](/docs/fr/plugins/org#pre-install-and-require-plugins).

90 

91<h3 id="depend-on-a-plugin-from-another-marketplace">

92 Dépendre d'un plugin d'une autre place de marché

93</h3>

94 

95Par défaut, Claude Code n'installe pas une dépendance d'une place de marché différente de celle du plugin déclarant, sauf si l'utilisateur a déjà cette dépendance installée et activée au même niveau. Cette valeur par défaut empêche une place de marché d'installer silencieusement des plugins d'une source que l'utilisateur n'a pas examinée.

96 

97Pour autoriser l'installation, ajoutez le nom de la place de marché cible à `allowCrossMarketplaceDependenciesOn` dans le `marketplace.json` de la place de marché racine. La place de marché racine est celle qui héberge le plugin que l'utilisateur installe. Seule la liste d'autorisation de la place de marché racine s'applique.

98 

99Le `marketplace.json` suivant permet à `deploy-kit` de dépendre d'un plugin de `your-shared-marketplace` :

100 

101```json .claude-plugin/marketplace.json theme={null}

102{

103 "name": "your-marketplace",

104 "owner": { "name": "Your Org" },

105 "allowCrossMarketplaceDependenciesOn": ["your-shared-marketplace"],

106 "plugins": [

107 {

108 "name": "deploy-kit",

109 "source": "./deploy-kit",

110 "dependencies": [

111 { "name": "audit-logger", "marketplace": "your-shared-marketplace" }

112 ]

113 }

114 ]

115}

116```

117 

118Si `allowCrossMarketplaceDependenciesOn` est manquant ou n'inclut pas la place de marché cible, Claude Code n'installe pas la dépendance. Lorsque la dépendance est déclarée dans l'entrée de la place de marché, l'installation elle-même est refusée avec un message qui commence par `Dependency "audit-logger@your-shared-marketplace" (required by deploy-kit@your-marketplace) is in marketplace "your-shared-marketplace", which is not in the allowlist` et nomme le champ à définir. Lorsqu'elle est déclarée dans `plugin.json`, l'installation se termine sans la dépendance et votre plugin échoue alors à charger.

119 

120La vérification de la liste d'autorisation ne s'applique pas à une dépendance qui est déjà activée. Si un utilisateur installe d'abord `audit-logger` de `your-shared-marketplace` lui-même, au même niveau, `deploy-kit` s'installe alors sans aucune modification de la liste d'autorisation.

121 

122<h3 id="test-a-plugin-and-its-dependency-locally">

123 Tester un plugin et sa dépendance localement

124</h3>

125 

126Si vous développez un plugin et le plugin dont il dépend en même temps, démarrez Claude Code à partir de votre shell et chargez les deux avec [`--plugin-dir`](/docs/fr/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) :

127 

128```bash theme={null}

129claude --plugin-dir ./my-dependency --plugin-dir ./my-plugin

130```

131 

132La copie locale de la dépendance satisfait l'entrée de dépendance de votre plugin, vous n'avez donc pas besoin d'installer la dépendance à partir de sa place de marché.

133 

134* **Pas de `version` nécessaire** : le `plugin.json` local n'a pas besoin non plus d'une `version`, car une [contrainte de version](#declare-a-dependency-with-a-version-constraint) n'est pas vérifiée par rapport à une copie locale.

135* **Entrées qui nomment une place de marché** : une entrée qui nomme une place de marché correspond également à la copie locale sur Claude Code v2.1.242 ou ultérieur.

136 

137Jusqu'à ce que vous installiez la dépendance à partir de sa place de marché, votre plugin cesse de charger chaque fois que la copie locale est désactivée ou absente :

138 

139* **Vous avez désactivé la copie locale** : votre plugin est désactivé au prochain chargement de plugin, avec une erreur qui se termine par `is disabled — enable it or remove the dependency`. Lorsque l'erreur nomme la dépendance comme `<name>@inline`, cet identifiant fait référence à la copie `--plugin-dir`.

140* **Vous avez démarré une session sans le drapeau `--plugin-dir` de la dépendance** : l'erreur signale que la dépendance n'est pas installée. Passez le drapeau à nouveau, ou installez la dépendance à partir de sa place de marché.

141 

142Lorsque les deux plugins se trouvent dans un dossier parent, vous pouvez passer ce dossier à `--plugin-dir` une seule fois. Si le dossier n'est pas lui-même un plugin, Claude Code charge chaque dossier enfant qui a un `.claude-plugin/plugin.json`. Nécessite Claude Code v2.1.265 ou ultérieur.

143 

144<h2 id="tag-plugin-releases-for-version-resolution">

145 Publier un plugin dont d'autres dépendent

146</h2>

147 

148Si vous maintenez un plugin dont d'autres plugins dépendent avec une contrainte de version, balisez ses versions pour que ces contraintes puissent se résoudre. Une contrainte se résout par rapport aux balises git du référentiel qui héberge le plugin. Balisez le référentiel vers lequel la [source du plugin](/docs/fr/plugins/marketplace-reference#plugin-sources) du plugin dans `marketplace.json` pointe :

149 

150* **Source `github`, `url`, ou `git-subdir`** : le référentiel du plugin lui-même, donc l'auteur du plugin crée les balises

151* **Chemin relatif tel que `./plugins/secrets-vault`** : le référentiel de la place de marché, donc le responsable de la place de marché crée les balises

152 

153<h3 id="create-a-release-tag">

154 Créer une balise de version

155</h3>

156 

157Balisez chaque version comme `<plugin-name>--v<version>`, où `<version>` correspond au champ `version` dans le `plugin.json` de ce commit. Le préfixe plugin-name permet à un référentiel de place de marché d'héberger plusieurs plugins avec des historiques de version indépendants.

158 

159Créez la balise à partir du répertoire du plugin, avec une télécommande `origin` configurée pour recevoir la balise poussée, en utilisant [`claude plugin tag`](/docs/fr/plugins/cli-reference#plugin-tag) :

160 

161```bash theme={null}

162claude plugin tag --push

163```

164 

165La commande construit le nom de la balise à partir du manifeste du plugin. Avant de créer la balise, elle exécute ces vérifications :

166 

167* Valide le plugin

168* Vérifie que `plugin.json` et l'entrée de la place de marché s'accordent sur la version, lorsque le répertoire du plugin se trouve dans un checkout de place de marché

169* Nécessite un arbre de travail propre sous le répertoire du plugin

170* Refuse si la balise existe déjà

171 

172Une exécution réussie imprime `Created tag secrets-vault--v2.1.0`. Avec `--push`, elle imprime également `Pushed to origin`. Sans `--push`, elle imprime la commande `git push` à exécuter vous-même.

173 

174Passez `--dry-run` pour voir le plan sans rien créer.

175 

176La [référence `claude plugin tag`](/docs/fr/plugins/cli-reference#plugin-tag) liste les drapeaux restants.

177 

178Vous pouvez également exécuter `git tag secrets-vault--v2.1.0` directement, tant que vous gardez la `version` dans `plugin.json` et dans l'entrée de la place de marché synchronisées vous-même.

179 

180<h3 id="constrain-a-dependency-that-has-a-non-git-source">

181 Contraindre une dépendance qui a une source non-git

182</h3>

183 

184La résolution basée sur les balises s'applique uniquement aux sources sauvegardées par git. Pour une dépendance avec une source de plugin `npm`, `archive`, ou `command` [plugin source](/docs/fr/plugins/marketplace-reference#plugin-sources), la contrainte ne contrôle pas quelle version est récupérée. Elle est toujours vérifiée lorsque le plugin charge, et le plugin dépendant est désactivé si la version installée ne la satisfait pas.

185 

186Pour les sources `npm`, `archive`, et `command`, la version vérifiée est la `version` dans le `plugin.json` de la dépendance. Définissez-en une là avant de contraindre cette dépendance, car un `plugin.json` qui ne définit pas de version ne satisfait aucune contrainte.

187 

188Claude Code n'installe jamais une dépendance avec une source `command` lui-même, donc les utilisateurs [l'installent d'abord](/docs/fr/plugins/marketplace-reference#command-plugin-source). Il n'exécute jamais non plus le [`headersHelper`](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) d'une dépendance, donc les utilisateurs installent également une dépendance dont l'entrée de la place de marché en définit une avant d'installer votre plugin.

189 

190En plus de `claude plugin install`, ces opérations installent également toute dépendance déclarée manquante, et les limites `command` et `headersHelper` s'appliquent à elles aussi :

191 

192* `/reload-plugins`

193* Mise à jour automatique de la place de marché du plugin dépendant

194* Réexécution de `claude plugin install` sur le plugin dépendant

195* `claude plugin marketplace add`

196 

197<h2 id="how-dependencies-behave-for-your-users">

198 Comment les dépendances se comportent pour vos utilisateurs

199</h2>

200 

201Ces sections décrivent comment Claude Code résout, vérifie et combine les contraintes que vous déclarez une fois que votre plugin est installé aux côtés d'autres.

202 

203<h3 id="how-a-constraint-resolves-against-tags">

204 Comment une contrainte se résout par rapport aux balises

205</h3>

206 

207Lorsqu'un utilisateur installe un plugin qui déclare `{ "name": "secrets-vault", "version": "~2.1.0" }`, la dépendance s'installe à partir de la balise `secrets-vault--v` la plus élevée qui satisfait `~2.1.0` sur le référentiel qui héberge `secrets-vault`. Lorsqu'aucune balise ne satisfait la plage, l'installation échoue ou utilise la copie actuelle de la place de marché :

208 

209* **Plugin avec son propre référentiel** : l'installation échoue avec un message contenant `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`.

210* **Plugin référencé par un chemin relatif** : l'installation utilise la copie actuelle de la place de marché à la place, et la contrainte est vérifiée lorsque le plugin charge. Si cette copie est en dehors de la plage, le plugin dépendant reste désactivé et `claude plugin list` affiche `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`.

211 

212Pour un plugin que la place de marché référence par un chemin relatif, une place de marché que vous avez ajoutée comme chemin de dossier local résout également les contraintes par rapport aux balises git de ce dossier, lorsque le dossier est un référentiel git. Cela nécessite Claude Code v2.1.196 ou ultérieur. Un dossier local qui n'est pas un référentiel git n'a pas de balises, donc Claude Code installe la dépendance à partir du contenu actuel du dossier à la place.

213 

214<h3 id="confirm-the-resolved-version">

215 Confirmer la version résolue

216</h3>

217 

218Pour confirmer quelle version une contrainte s'est résolue, exécutez `claude plugin list` dans votre shell. Une dépendance résolue par balise affiche sa version avec un suffixe de commit de 12 caractères, tel que `2.1.0-8713c5b11005`.

219 

220Les vérifications de contrainte utilisent la version de la balise plutôt que la `version` dans `plugin.json`, même si `plugin.json` à ce commit est en retard.

221 

222Si vous forcez le déplacement d'une balise vers un commit différent, la prochaine installation récupère le contenu de ce commit au lieu de réutiliser une copie en cache obsolète. Voir [Versions et mises à jour](/docs/fr/plugins/loading#versions-and-updates) pour savoir comment la version d'un plugin devient sa clé de cache.

223 

224<h3 id="combine-constraints-from-several-plugins">

225 Combiner les contraintes de plusieurs plugins

226</h3>

227 

228Lorsque plusieurs plugins installés contraignent la même dépendance, la dépendance se résout à la version la plus élevée qui satisfait toutes leurs plages. Les combinaisons courantes se résolvent comme ceci :

229 

230| Plugin A nécessite | Plugin B nécessite | Résultat |

231| :----------------- | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |

232| `^2.0` | `>=2.1` | Une installation à la balise `2.x` la plus élevée à ou au-dessus de `2.1.0`. Les deux plugins se chargent. |

233| `~2.1` | `~3.0` | L'installation du plugin B échoue avec un message `has conflicting version requirements`. Le plugin A et la dépendance restent comme ils étaient. |

234| `=2.1.0` | aucun | La dépendance reste à `2.1.0`. La mise à jour automatique ignore les versions plus récentes tant que le plugin A est installé. |

235 

236La mise à jour automatique récupère une dépendance contrainte à la balise git la plus élevée qui satisfait la plage de chaque plugin installé, plutôt qu'à la dernière version de la place de marché. Si les plages des plugins installés ne se chevauchent pas, la mise à jour automatique laisse cette dépendance à sa version actuelle, et l'onglet **Erreurs** de `/plugin` affiche une entrée nommant le plugin contraignant. S'ils se chevauchent mais qu'aucune balise ne tombe dans la plage, la mise à jour automatique récupère la copie actuelle de la place de marché et ignore la mise à jour lorsque la `version` de cette copie tombe en dehors de la plage de tout plugin installé.

237 

238Lorsqu'un utilisateur désinstalle le dernier plugin qui contraint une dépendance, la dépendance n'est plus contrainte à une plage de version et reprend le suivi de son entrée de place de marché à la prochaine mise à jour.

239 

240<h2 id="see-also">

241 Voir aussi

242</h2>

243 

244* [`claude plugin prune`](/docs/fr/plugins/cli-reference#plugin-prune) : supprimer les dépendances auto-installées dont aucun plugin n'a plus besoin

245* [Héberger une place de marché](/docs/fr/plugins/host-marketplace) : canaux de version et recommandation d'autres plugins

plugins/host-marketplace.md +458 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Héberger et maintenir une marketplace

6 

7> Publiez une marketplace de plugins où les utilisateurs peuvent y accéder, accordez l'accès à une marketplace privée, et publiez des mises à jour et des renommages sans casser les installations.

8 

9Héberger une marketplace signifie mettre votre catalogue `marketplace.json` où d'autres personnes peuvent l'ajouter avec `/plugin marketplace add`, installer ses plugins, et continuer à recevoir vos modifications après que vous les ayez publiées.

10 

11Cette page est destinée à la personne qui exploite une marketplace.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Vous n'avez pas encore écrit le fichier de catalogue** : commencez par [Créer une marketplace](/docs/fr/plugins/create-marketplace)

17 * **Vous êtes un administrateur qui exige, restreint ou pré-installe des marketplaces sur les machines de votre organisation** : lisez [Gérer les plugins pour votre organisation](/docs/fr/plugins/org)

18</Note>

19 

20Commencez par [Héberger votre marketplace](#host-your-marketplace) pour choisir un hôte et la commande que vos utilisateurs exécutent. Lisez [Tenir les utilisateurs à jour](#keep-users-up-to-date) avant votre première version. Lisez [Renommer ou supprimer un plugin](#rename-or-remove-a-plugin) avant de modifier le `name` d'un plugin.

21 

22<h2 id="host-your-marketplace">

23 Héberger votre marketplace

24</h2>

25 

26Vous pouvez héberger la marketplace sur GitHub, sur un autre hôte git, en tant qu'URL `marketplace.json` hébergée, ou dans un répertoire sur un système de fichiers partagé. Envoyez à vos utilisateurs la commande add pour votre hôte et dites-leur ce dont ils ont besoin sur leur machine :

27 

28| Hôte | Les utilisateurs exécutent, dans une session Claude Code | Ce dont les utilisateurs ont besoin |

29| :---------------------------------------------------------------- | :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |

30| GitHub | `/plugin marketplace add your-org/your-marketplace` | `git`, et pour un référentiel privé l'accès décrit sous [Accorder l'accès à une marketplace privée](#grant-access-to-a-private-marketplace) |

31| GitLab, Bitbucket, GitHub Enterprise Server, ou un autre hôte git | `/plugin marketplace add https://gitlab.example.com/team/plugins.git` | `git`, et accès à l'hôte depuis leur machine. Envoyez l'URL complète, car le raccourci `owner/repo` signifie toujours github.com |

32| Une URL `marketplace.json` hébergée | `/plugin marketplace add https://plugins.example.com/marketplace.json` | Accès HTTPS à l'URL. Les utilisateurs n'ont pas besoin de `git` pour le catalogue lui-même |

33| Un répertoire sur un système de fichiers partagé | `/plugin marketplace add /Volumes/shared/claude-plugins` | Accès en lecture au chemin |

34 

35Pour épingler une branche ou une étiquette d'une marketplace GitHub ou git-URL, dites aux utilisateurs d'ajouter `#<ref>`, comme dans `your-org/your-marketplace#stable`. La [référence des commandes de plugin](/docs/fr/plugins/cli-reference#plugin-marketplace-add) énumère chaque forme que la commande accepte.

36 

37Un ajout réussi affiche `Successfully added marketplace: your-marketplace`. Claude Code prend ce nom du champ `name` dans votre `marketplace.json`, pas du nom du référentiel.

38 

39Les utilisateurs installent ensuite un plugin par le `name` de son entrée et le `name` de la marketplace, comme dans `/plugin install code-formatter@your-marketplace`.

40 

41<h3 id="register-the-marketplace-for-everyone-in-a-repository">

42 Enregistrer la marketplace pour tout le monde dans un référentiel

43</h3>

44 

45Pour partager la marketplace avec tous ceux qui travaillent dans un référentiel, exécutez `claude plugin marketplace add your-org/your-marketplace --scope project` là une fois depuis votre shell et validez le `.claude/settings.json` qu'il écrit. Claude Code enregistre ensuite la marketplace pour chaque coéquipier qui [fait confiance au dossier](/docs/fr/plugins/org#require-plugins-per-repository).

46 

47<h3 id="avoid-relative-path-entries-in-a-url-hosted-marketplace">

48 Éviter les entrées de chemin relatif dans une marketplace hébergée sur URL

49</h3>

50 

51Quand les utilisateurs ajoutent votre marketplace en tant qu'URL `marketplace.json` simple, Claude Code télécharge uniquement ce fichier. Une entrée dans votre tableau `plugins` dont la `source` est un chemin relatif tel que `./plugins/formatter` échoue ensuite à l'installation avec [`its marketplace entry path does not stay inside the marketplace directory`](/docs/fr/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces). Donnez à chaque entrée une source qui peut être récupérée seule, comme un référentiel `github` ou une URL `archive`, ou hébergez la marketplace dans un référentiel git pour que Claude Code clone l'arborescence entière.

52 

53<h3 id="edit-plugins-in-place-on-a-shared-directory">

54 Éditer les plugins sur place dans un répertoire partagé

55</h3>

56 

57Quand les utilisateurs ajoutent votre marketplace à partir d'un répertoire partagé, Claude Code lit les plugins avec des sources de chemin relatif directement depuis ce répertoire au lieu de les copier. Les utilisateurs voient vos modifications quand ils démarrent la prochaine session ou exécutent `/reload-plugins`, sans étape de mise à jour ou augmentation de version.

58 

59<h3 id="keep-plugin-files-out-of-git-lfs">

60 Garder les fichiers de plugin hors de Git LFS

61</h3>

62 

63Gardez les fichiers dont vos plugins ont besoin hors de [Git LFS](https://git-lfs.com). Quand les utilisateurs ajoutent une marketplace hébergée dans un référentiel git, ou installent un plugin basé sur git qu'elle énumère, Claude Code clone ce référentiel de marketplace ou de plugin sur leur machine. Le clone ne télécharge jamais le contenu LFS, donc les fichiers suivis par LFS arrivent en tant que fichiers pointeurs.

64 

65<h3 id="share-files-within-a-marketplace-with-symlinks">

66 Partager les fichiers au sein d'une marketplace avec des liens symboliques

67</h3>

68 

69Pour partager les fichiers entre votre plugin et d'autres parties de la même marketplace, créez des liens symboliques à l'intérieur de votre répertoire de plugin. Quand Claude Code copie le plugin dans son cache, il gère chaque lien symbolique par où la cible se résout :

70 

71* **Au sein du répertoire du plugin lui-même** : le lien symbolique est préservé en tant que lien symbolique relatif dans le cache, donc il continue à se résoudre à la cible copiée au moment de l'exécution.

72* **Ailleurs au sein de la même marketplace** : le lien symbolique est déréférencé. Le contenu de la cible est copié dans le cache à sa place. Cela permet au répertoire `skills/` d'un meta-plugin de se lier aux compétences définies par d'autres plugins dans la marketplace.

73* **En dehors de la marketplace** : le lien symbolique est ignoré pour des raisons de sécurité.

74 

75Pour les plugins installés à partir d'un chemin local, ou à partir d'une [`command` source](/docs/fr/plugins/marketplace-reference#command-plugin-source) dont le `mode` est le `copy` par défaut, Claude Code préserve uniquement les liens symboliques qui se résolvent au sein du répertoire du plugin lui-même et ignore tous les autres.

76 

77La commande suivante crée un lien depuis l'intérieur d'un plugin de marketplace vers une compétence partagée définie par un plugin frère. Sur Windows, utilisez `mklink /D` depuis une invite de commande élevée ou activez le mode développeur :

78 

79```bash theme={null}

80ln -s ../../shared-plugin/skills/foo ./skills/foo

81```

82 

83<h2 id="distribute-through-organization-settings">

84 Distribuer via les paramètres de l'organisation

85</h2>

86 

87Sur un plan Team ou Enterprise, vous pouvez également distribuer la marketplace via [**Paramètres de l'organisation > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) sur claude.ai au lieu de l'héberger quelque part où les utilisateurs l'ajoutent eux-mêmes. La synchronisation de l'organisation lit le référentiel via la connexion GitHub ou GitLab de votre organisation sur claude.ai, donc les identifiants git de vos utilisateurs ne sont pas impliqués.

88 

89La synchronisation de l'organisation est plus stricte sur le référentiel que `/plugin marketplace add` ne l'est :

90 

91* **Référentiel de marketplace** : sur github.com et gitlab.com, il doit être privé ou interne

92* **Sources de plugin** : chaque source de plugin doit être de type `github`, `url`, ou `git-subdir`, ou un [chemin relatif](/docs/fr/plugins/marketplace-reference#relative-path-plugin-source) qui commence par `./`

93* **Répertoire `bin/` de niveau supérieur** : claude.ai rejette un plugin qui en a un et synchronise le reste de la marketplace. Le message d'erreur commence par `Plugin contains a top-level bin/ directory`. Gardez les exécutables dans un autre répertoire, comme `scripts/`, et référencez-les comme `${CLAUDE_PLUGIN_ROOT}/scripts/<name>` depuis vos hooks ou configurations de serveur MCP

94 

95Voir [Gérer les plugins pour votre organisation](https://support.claude.com/en/articles/13837433) pour le flux de travail administrateur.

96 

97<h2 id="grant-access-to-a-private-marketplace">

98 Accorder l'accès à une marketplace privée

99</h2>

100 

101Quand un utilisateur ajoute, installe à partir de, ou met à jour votre marketplace, Claude Code exécute `git` sur sa machine avec les invites interactives désactivées et s'appuie sur les identifiants que cette machine détient déjà. Claude Code n'a pas de jeton git qui lui est propre, et `marketplace.json` n'a pas de champ pour en avoir un.

102 

103Vous choisissez si le clone s'exécute sur SSH ou HTTPS par la forme de la commande add que vous envoyez aux utilisateurs :

104 

105* **GitHub `owner/repo`** : Claude Code sonde `ssh -T git@github.com` et clone sur SSH quand la sonde réussit. Si la sonde échoue, ou le clone SSH lui-même échoue, il clone sur HTTPS. Les utilisateurs sur des machines sans clé SSH GitHub peuvent définir `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1` pour ignorer la sonde et cloner sur HTTPS.

106* **`git@host:path.git`** : SSH.

107* **`https://example.com/repo.git`** : HTTPS.

108 

109Dites aux utilisateurs ce que chaque protocole a besoin sur leur machine :

110 

111* **SSH** : la clé doit fonctionner sans invite de phrase secrète, par exemple parce qu'elle est chargée dans `ssh-agent`. L'hôte doit déjà être dans `known_hosts`.

112* **HTTPS** : Claude Code laisse l'assistant d'identifiants git de l'utilisateur activé mais lui interdit de demander. Un identifiant que l'assistant stocke déjà fonctionne ; un qu'il devrait demander échoue. Sur GitHub, `gh auth login` suivi de `gh auth setup-git` en stocke un.

113 

114Pour un hôte GitHub Enterprise Server, les utilisateurs ont besoin d'accès git à cet hôte depuis leur machine. Voir [Plugin marketplaces on GHES](/docs/fr/github-enterprise-server#plugin-marketplaces-on-ghes) pour ce que chaque surface Claude Code a besoin d'atteindre une marketplace hébergée sur GHES.

115 

116Si vous distribuez via **Paramètres de l'organisation > Plugins & skills** sur claude.ai à la place, les identifiants git de vos utilisateurs ne sont pas impliqués. Voir [Distribuer via les paramètres de l'organisation](#distribute-through-organization-settings) pour quelles sources de plugin peuvent être privées là.

117 

118<h3 id="serve-users-who-have-no-git-host-account">

119 Servir les utilisateurs qui n'ont pas de compte sur l'hôte git

120</h3>

121 

122Les utilisateurs sans compte sur l'hôte git peuvent ajouter une marketplace que vous servez en tant qu'URL `marketplace.json` ou à partir d'un répertoire partagé, mais ils ne peuvent installer que les plugins dont les sources d'entrée ils peuvent aussi atteindre. Une entrée qui pointe vers un référentiel `github` privé échoue toujours à l'installation pour eux, parce que Claude Code la récupère avec le même `git` non-interactif qu'il utilise pour une marketplace hébergée sur git.

123 

124Ces sources d'entrée n'ont pas besoin de compte git :

125 

126* **`archive`** : un zip téléchargé sur HTTPS. Les utilisateurs n'ont besoin ni de `git` ni de compte, seulement d'accès réseau à l'URL. Nécessite Claude Code v2.1.224 ou ultérieur. Épinglez chaque archive avec `sha256` pour que Claude Code refuse un téléchargement modifié. Pour envoyer des identifiants avec le téléchargement, voir [Authentifier les téléchargements d'archive](#authenticate-archive-downloads).

127* **Un référentiel git public** : Claude Code clone une source `url` ou `git-subdir` publique sur HTTPS sans identifiants quand l'entrée donne une URL `https://`. Pour une source `github`, ou une source `git-subdir` écrite comme `owner/repo`, les utilisateurs sans clé SSH GitHub définissent `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.

128 

129Pour une équipe sur un réseau, une marketplace `directory` sur un système de fichiers partagé fonctionne aussi sans comptes git. Les utilisateurs ont besoin seulement d'accès en lecture au chemin.

130 

131<h3 id="what-background-auto-update-does-with-credentials">

132 Ce que la mise à jour automatique en arrière-plan fait avec les identifiants

133</h3>

134 

135La mise à jour automatique en arrière-plan est l'actualisation sans surveillance de Claude Code des marketplaces et des plugins installés après le démarrage d'une session. Elle est désactivée pour votre marketplace jusqu'à ce qu'un utilisateur ou un administrateur l'active, comme couvert sous [Tenir les utilisateurs à jour](#keep-users-up-to-date).

136 

137Quand elle est activée pour une marketplace privée, la vérification en arrière-plan des nouveaux commits utilise les assistants d'identifiants git configurés de l'utilisateur et ne demande jamais. Chaque type de distant et d'assistant donne un résultat différent :

138 

139* **Distants SSH** : une clé chargée dans `ssh-agent` authentifie la vérification.

140* **Distants HTTPS avec un identifiant stocké** : un assistant qui peut fournir un identifiant stocké sans demander authentifie la vérification. Git Credential Manager, l'assistant Keychain macOS, et `git-credential-store` fonctionnent de cette façon une fois qu'ils détiennent un identifiant pour l'hôte.

141* **Distants HTTPS avec un assistant qui a besoin de demander** : l'assistant ne peut pas répondre en arrière-plan. La mise à jour échoue silencieusement et le checkout existant reste en place, donc les plugins de l'utilisateur continuent à fonctionner à partir du dernier état synchronisé.

142 

143Après la vérification, Claude Code fait l'une des choses suivantes :

144 

145* **Le checkout est à jour** : Claude Code le laisse tel quel.

146* **La vérification trouve de nouveaux commits, ou échoue parce qu'elle ne peut pas atteindre ou s'authentifier au distant** : Claude Code clone la marketplace à nouveau et remplace le checkout existant par le nouveau clone. Si ce clone échoue, le checkout existant reste en place. Le re-clone peut [expirer sur les grands référentiels](/docs/fr/plugins/troubleshooting#git-clone-timed-out-after-120s).

147 

148Pour garder une marketplace privée à jour, un utilisateur peut faire l'une des choses suivantes :

149 

150* **Stocker un identifiant** : se connecter d'abord à l'assistant d'identifiants pour qu'il détienne un identifiant pour l'hôte. Pour GitHub, exécutez `gh auth login`, puis `gh auth setup-git`.

151* **Garder le checkout en cas d'échec** : si l'utilisateur définit `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1`, Claude Code garde le checkout existant sans tenter le re-clone quand la vérification en arrière-plan ne peut pas atteindre ou s'authentifier au distant. Les plugins continuent à fonctionner à partir du dernier état synchronisé.

152 

153Si un utilisateur définit `GITHUB_TOKEN` ou un autre jeton de fournisseur dans l'environnement, cela seul n'authentifie pas la vérification en arrière-plan. Un jeton prend effet via un assistant d'identifiants, comme l'assistant de l'interface de ligne de commande `gh`, qui lit `GH_TOKEN` et `GITHUB_TOKEN`.

154 

155<h2 id="roll-out-to-a-whole-company">

156 Déployer dans toute une entreprise

157</h2>

158 

159Déployer un plugin dans une entreprise implique vous en tant que propriétaire de la marketplace, un administrateur qui contrôle les paramètres gérés, et chaque personne qui utilise Claude Code. Vous pouvez exécuter le déploiement sans l'administrateur, auquel cas chaque personne ajoute la marketplace et installe le plugin elle-même.

160 

161| Qui | Ce qu'ils font | Où c'est couvert |

162| :-------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

163| Vous, le propriétaire de la marketplace | Gardez le catalogue dans un référentiel que seule l'entreprise peut lire, envoyez la commande add pour votre hôte, et dites ce que chaque personne a besoin sur sa machine | [Héberger votre marketplace](#host-your-marketplace) et [Accorder l'accès à une marketplace privée](#grant-access-to-a-private-marketplace) |

164| Un administrateur | Enregistre la marketplace et active ses plugins pour tout le monde avec `extraKnownMarketplaces` et `enabledPlugins` dans les paramètres gérés, et définit `autoUpdate` là | [Exiger une marketplace et ses plugins](/docs/fr/plugins/org#require-a-marketplace-and-its-plugins) et [Définir la politique de mise à jour](/docs/fr/plugins/org#set-update-policy) |

165| Chaque personne | A besoin d'accès en lecture à un référentiel git privé, avec des identifiants déjà stockés sur sa machine. Sans administrateur, elle exécute aussi les commandes add et install | [Ajouter une marketplace privée](/docs/fr/plugins/install#add-a-private-marketplace) |

166 

167Pour les personnes qui n'ont pas de compte sur l'hôte git, ces sections couvrent chacune une façon de les atteindre :

168 

169* **Sources d'entrée qui n'ont pas besoin de compte git** : [Servir les utilisateurs qui n'ont pas de compte sur l'hôte git](#serve-users-who-have-no-git-host-account)

170* **Un répertoire de plugins pré-rempli** : [Ensemencer les conteneurs et CI](/docs/fr/plugins/org#seed-containers-and-ci), qui sert aussi les utilisateurs qui n'ont pas de compte sur l'hôte git

171* **Paramètres de l'organisation claude.ai** : [Distribuer via les paramètres de l'organisation](#distribute-through-organization-settings), où les identifiants git de vos utilisateurs ne sont pas impliqués

172 

173<h2 id="keep-users-up-to-date">

174 Tenir les utilisateurs à jour

175</h2>

176 

177Vos modifications atteignent les utilisateurs via la mise à jour automatique en arrière-plan, une fois qu'elle est activée pour votre marketplace, ou quand les utilisateurs mettent à jour le plugin eux-mêmes. Dans les deux cas, un utilisateur obtient une nouvelle copie d'un plugin uniquement quand sa version calculée change, comme décrit sous [Publier une nouvelle version](#release-a-new-version).

178 

179<h3 id="turn-on-auto-update">

180 Activer la mise à jour automatique

181</h3>

182 

183La mise à jour automatique en arrière-plan est désactivée pour votre marketplace par défaut, et `marketplace.json` n'a pas de champ pour l'activer. Un utilisateur ou un administrateur l'active :

184 

185* **Dites aux utilisateurs de l'activer** : chaque utilisateur va à **Marketplaces** dans `/plugin`, sélectionne votre marketplace, et sélectionne **Enable auto-update**.

186* **Demandez à un administrateur de la définir** : si un administrateur définit `"autoUpdate": true` sur l'entrée `extraKnownMarketplaces` de votre marketplace dans les paramètres gérés, elle est activée pour tout le monde qui reçoit ces paramètres. Voir [Définir la politique de mise à jour](/docs/fr/plugins/org#set-update-policy).

187 

188Sans mise à jour automatique, les utilisateurs reçoivent vos modifications quand ils exécutent `/plugin marketplace update <name>` dans une session ou `claude plugin update <plugin>@<name>` dans le shell.

189 

190Pour ce que les utilisateurs voient quand une mise à jour les atteint, voir [Quand la mise à jour automatique s'exécute](/docs/fr/plugins/loading#when-auto-update-runs).

191 

192<h3 id="release-a-new-version">

193 Publier une nouvelle version

194</h3>

195 

196Pour publier une nouvelle version aux utilisateurs, modifiez le `version` du plugin. Les utilisateurs obtiennent une nouvelle copie uniquement quand la version calculée du plugin diffère de celle qu'ils ont. Cette version provient de `plugin.json` d'abord, puis de l'entrée de marketplace, selon [Versions et mises à jour](/docs/fr/plugins/loading#versions-and-updates).

197 

198Un plugin que les utilisateurs [chargent sur place](/docs/fr/plugins/loading#find-plugins-on-disk) à partir d'une marketplace qu'ils ont ajoutée en tant que répertoire local n'est pas contrôlé par `version`. Il charge vos fichiers actuels à chaque démarrage de session, peu importe ce que sa chaîne de version dit.

199 

200Pour chaque installation autre qu'un chargement sur place ou un à partir d'une source `command`, soit augmentez `version` à chaque version, soit omettez-la :

201 

202* **Augmentez `version` à chaque version** : les utilisateurs restent sur leur copie en cache jusqu'à ce que la chaîne change. Si vous définissez `"version": "1.0.0"` et poussez de nouveaux commits sans le modifier, les utilisateurs ne les reçoivent pas.

203* **Omettez `version`** : les utilisateurs suivent vos commits à la place. Laissez `version` hors de `plugin.json` et de l'entrée de marketplace.

204 

205Ne définissez pas `version` dans `plugin.json` et l'entrée de marketplace. Si vous le faites, Claude Code utilise la valeur `plugin.json` sans avertissement, et `claude plugin validate` signale l'inadéquation comme `Entry declares version "<a>" but <path>/plugin.json says "<b>"`.

206 

207<h3 id="hold-users-on-one-version">

208 Garder les utilisateurs sur une version

209</h3>

210 

211Une marketplace sert une version de chaque plugin à la fois, donc vous gardez les utilisateurs sur une version en choisissant ce que chaque entrée pointe :

212 

213* **`ref` et `sha` sur l'entrée du plugin** : `ref` nomme une branche ou une étiquette et `sha` nomme un commit pour une source `github`, `url`, ou `git-subdir`. Voir [Sources de plugin](/docs/fr/plugins/marketplace-reference#plugin-sources).

214* **`#<ref>` sur la commande add** : les utilisateurs qui ajoutent `your-org/your-marketplace#stable` obtiennent cette branche ou étiquette du catalogue. Pour deux lignes de version à la fois, voir [Exécuter les canaux de version](#run-release-channels).

215* **Étiquettes `<plugin>--v<version>`** : la plage de version d'une dépendance se résout par rapport à ces étiquettes. Voir [Publier un plugin sur lequel d'autres dépendent](/docs/fr/plugins/dependencies#tag-plugin-releases-for-version-resolution).

216 

217[Publier une nouvelle version](#release-a-new-version) dit quand une entrée modifiée atteint les utilisateurs.

218 

219<h3 id="change-the-command-of-a-command-source">

220 Modifier la commande d'une source de commande

221</h3>

222 

223Si vous modifiez la `command` d'une [`command` source](/docs/fr/plugins/marketplace-reference#command-plugin-source), ou changez son `mode`, chaque utilisateur doit accepter la nouvelle commande avant que Claude Code ne l'exécute. Claude Code exécute uniquement la commande exacte qu'un utilisateur a acceptée quand il a installé ou mis à jour le plugin pour la dernière fois.

224 

225Après que la copie de votre marketplace d'un utilisateur récupère la modification, cet utilisateur voit l'un des éléments suivants :

226 

227* **Pas plus d'exécutions en arrière-plan** : l'[exécution une fois par session](/docs/fr/plugins/loading#when-a-command-source-re-runs) de la commande s'arrête pour cet utilisateur, donc la nouvelle sortie de l'outil ne les atteint pas.

228* **Une entrée dans l'onglet Erreurs `/plugin`** : l'entrée affiche la nouvelle commande et la commande `claude plugin update` à exécuter.

229 

230Dites aux utilisateurs d'exécuter la commande `claude plugin update` que cette entrée affiche, dans un terminal. Claude Code leur affiche la nouvelle commande et leur demande de l'accepter.

231 

232<h2 id="run-release-channels">

233 Exécuter les canaux de version

234</h2>

235 

236Pour offrir des pistes stables et d'accès anticipé, hébergez deux marketplaces dont les entrées pointent vers différentes refs du même plugin, et laissez chaque utilisateur ajouter celle qu'il veut. Claude Code n'a pas de concept de canal de version, et une marketplace sert une version de chaque plugin à la fois.

237 

238Donnez aux deux fichiers `marketplace.json` des valeurs `name` différentes. Claude Code identifie une marketplace par son `name`, donc un utilisateur ne peut pas avoir deux marketplaces avec le même nom enregistrées à la fois.

239 

240Avec ces deux catalogues, les utilisateurs qui ajoutent `stable-tools` installent `code-formatter` à partir de la branche `stable`, et les utilisateurs qui ajoutent `latest-tools` l'installent à partir de `latest` :

241 

242```json theme={null}

243{

244 "name": "stable-tools",

245 "owner": { "name": "Your Org" },

246 "plugins": [

247 { "name": "code-formatter", "source": { "source": "github", "repo": "your-org/code-formatter", "ref": "stable" } }

248 ]

249}

250```

251 

252```json theme={null}

253{

254 "name": "latest-tools",

255 "owner": { "name": "Your Org" },

256 "plugins": [

257 { "name": "code-formatter", "source": { "source": "github", "repo": "your-org/code-formatter", "ref": "latest" } }

258 ]

259}

260```

261 

262Donnez aux deux refs des versions `plugin.json` différentes, ou omettez `version` pour que le SHA du commit les distingue. Les mises à jour sont détectées en comparant les versions, donc une ref qui se déplace sans changement de version laisse les utilisateurs sur la copie en cache.

263 

264Pour assigner les canaux aux groupes d'utilisateurs au lieu de laisser les utilisateurs choisir, un administrateur donne à chaque groupe l'entrée `extraKnownMarketplaces` correspondante, comme décrit sous [Définir la politique de mise à jour](/docs/fr/plugins/org#set-update-policy).

265 

266<h2 id="rename-or-remove-a-plugin">

267 Renommer ou supprimer un plugin

268</h2>

269 

270Le `name` d'un plugin est son identifiant. Les utilisateurs le référencent dans les clés de paramètres `enabledPlugins` et `pluginConfigs` et dans `/plugin install`, donc le modifier casse chaque installation existante.

271 

272Pour modifier l'étiquette que les utilisateurs voient dans `/plugin` sans casser quoi que ce soit, définissez `displayName` dans `plugin.json` et gardez `name` inchangé.

273 

274<h3 id="migrate-users-with-a-renames-map">

275 Migrer les utilisateurs avec une carte de renommages

276</h3>

277 

278Quand vous devez modifier un `name`, ajoutez une carte `renames` de niveau supérieur à `marketplace.json` pour que Claude Code migre les utilisateurs existants au lieu de signaler [`Plugin "<name>" not found in marketplace`](/docs/fr/plugins/troubleshooting#plugin-not-found-in-marketplace). Faites la même chose quand vous supprimez une entrée de `plugins`. La migration automatique nécessite Claude Code v2.1.193 ou ultérieur.

279 

280Mappez chaque ancien nom à son nom actuel, ou à `null` quand le plugin est parti. Cette marketplace renomme `formatter` en `code-formatter` et enregistre que `legacy-linter` a été supprimé :

281 

282```json theme={null}

283{

284 "name": "your-marketplace",

285 "owner": { "name": "Your Org" },

286 "plugins": [

287 { "name": "code-formatter", "source": "./plugins/code-formatter" }

288 ],

289 "renames": {

290 "formatter": "code-formatter",

291 "legacy-linter": null

292 }

293}

294```

295 

296Après que vous ayez poussé, un utilisateur qui a toujours l'ancien nom activé voit l'un de ces résultats :

297 

298* **Entrée renommée** : le plugin se charge sous son nouveau nom. `claude plugin list` et les détails du plugin sous `/plugin` affichent `Renamed to "code-formatter" in the "your-marketplace" marketplace` une fois, et Claude Code réécrit l'ancienne clé à la nouvelle dans `enabledPlugins` et `pluginConfigs` dans les portées de paramètres utilisateur, projet et local.

299* **Entrée `null`** : l'ancienne clé est supprimée de ces portées et l'utilisateur voit `Removed from the "your-marketplace" marketplace`.

300* **Activé dans les paramètres gérés** : le plugin se charge toujours sous son nouveau nom, mais Claude Code ne peut pas réécrire les paramètres gérés, donc l'avis se répète jusqu'à ce qu'un administrateur mette à jour `enabledPlugins` là.

301 

302Pour une marketplace que les utilisateurs ont ajoutée à partir d'un référentiel git ou d'une URL, un plugin renommé signale [`Plugin "<name>" not cached at <path>`](/docs/fr/plugins/troubleshooting#plugin-not-cached-at) jusqu'à ce que l'utilisateur exécute `/plugin install code-formatter@your-marketplace` une fois dans une session.

303 

304Traitez `renames` comme un historique d'ajout uniquement. Gardez les anciennes entrées après que tout le monde a migré. Quand vous renommez à nouveau, ajoutez une deuxième entrée plutôt que de modifier la première, parce que Claude Code suit la chaîne à partir du nom le plus ancien.

305 

306Dans votre shell, exécutez `claude plugin validate .` après avoir édité la carte. Il rejette une chaîne qui boucle ou qui se termine n'importe où sauf `null` ou un nom dans `plugins`, avec `renames.<name>: chain does not resolve`.

307 

308<h3 id="uninstall-removed-plugins-from-users’-machines">

309 Désinstaller les plugins supprimés des machines des utilisateurs

310</h3>

311 

312Pour désinstaller un plugin supprimé des machines des utilisateurs plutôt que de laisser une copie derrière, définissez `"forceRemoveDeletedPlugins": true` au niveau supérieur de `marketplace.json`. Sans le champ, un plugin supprimé reste installé et signale `Plugin "<name>" not found in marketplace` quand une session le charge. Avec lui, Claude Code fait ce qui suit à chaque démarrage de session :

313 

3141. Compare ce que les utilisateurs ont installé à partir de votre marketplace par rapport aux entrées et à la carte `renames`, et traite tout plugin qui n'est ni listé ni renommé comme supprimé.

3152. Désinstalle chaque plugin supprimé des portées utilisateur, projet et local. Les plugins que seuls les paramètres gérés ont installés restent en place.

3163. Liste chaque plugin supprimé sous un en-tête **Flagged** dans `/plugin` avec le statut `Removed from marketplace`.

317 

318<h2 id="authenticate-archive-downloads">

319 Authentifier les téléchargements d'archive

320</h2>

321 

322Pour authentifier un téléchargement [`archive`](/docs/fr/plugins/marketplace-reference#archive-plugin-source), comme un téléchargement à partir d'un registre privé, définissez les en-têtes HTTP que Claude Code envoie avec lui. Vous pouvez définir `headers` dans l'un de ces endroits :

323 

324* **La source `url` de la marketplace** : la source `url` à partir de laquelle vous avez enregistré la marketplace, comme une entrée [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces).

325* **L'entrée du plugin** : sur Claude Code v2.1.238 ou ultérieur, vous pouvez la définir sur l'entrée `marketplace.json` du plugin à la place, à côté de `source`.

326 

327Dans l'un ou l'autre endroit, définissez une commande `headersHelper` au lieu de `headers` quand la valeur est de courte durée, comme un jeton que votre registre génère à la demande. Claude Code exécute la commande et envoie l'objet JSON qu'elle imprime comme les en-têtes de cet endroit. Nécessite Claude Code v2.1.238 ou ultérieur.

328 

329La [référence de marketplace](/docs/fr/plugins/marketplace-reference#plugin-entries) énumère les champs d'entrée `headers` et `headersHelper`.

330 

331L'endroit que vous choisissez décide quels téléchargements obtiennent les en-têtes et quand Claude Code exécute la commande :

332 

333| Endroit | Téléchargements qui obtiennent les en-têtes | Quand Claude Code exécute un `headersHelper` défini là |

334| :-------------------------- | :------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

335| Source `url` de marketplace | Les téléchargements d'archive sur l'origine de l'URL de la marketplace, ce qui signifie le même schéma, hôte et port | Avant chaque récupération du `marketplace.json` de la marketplace et avant chaque téléchargement d'archive sur cette origine. Claude Code réutilise la sortie d'une exécution pendant jusqu'à 60 secondes |

336| Entrée de plugin | Ce téléchargement d'entrée uniquement | Uniquement quand un utilisateur installe ou met à jour ce seul plugin par lui-même et [accepte la commande](#how-users-accept-a-headershelper-command) |

337 

338Où les deux endroits définissent un en-tête du même nom, Claude Code envoie la valeur de l'entrée. Au sein d'un endroit, un en-tête que la commande imprime remplace un en-tête du même nom listé dans `headers`.

339 

340<h3 id="add-a-headershelper-to-a-plugin-entry">

341 Ajouter un headersHelper à une entrée de plugin

342</h3>

343 

344Cette entrée définit `headersHelper` à côté de `source`. Elle définit aussi [`"strict": false`](/docs/fr/plugins/marketplace-reference#strict-mode), que Claude Code exige d'une entrée `marketplace.json` qui définit `headersHelper` :

345 

346```json theme={null}

347{

348 "name": "my-plugin",

349 "description": "Formatting commands for internal services",

350 "strict": false,

351 "source": {

352 "source": "archive",

353 "url": "https://registry.example.com/plugins/my-plugin-2.1.0.zip"

354 },

355 "headersHelper": "/opt/bin/mint-registry-token.sh"

356}

357```

358 

359Pour vérifier l'entrée, exécutez `claude plugin install my-plugin@your-marketplace` dans votre shell. Claude Code vous affiche la commande et l'URL d'archive, et télécharge le zip après que vous l'acceptiez.

360 

361<h3 id="write-the-headershelper-command">

362 Écrire la commande headersHelper

363</h3>

364 

365Que vous définissiez `headersHelper` sur une source `url` de marketplace ou sur une entrée de plugin, écrivez la commande pour répondre à ces exigences :

366 

367* **Texte de commande** : au maximum 500 caractères ASCII imprimables, sans suite de quatre espaces ou plus.

368* **Sortie** : imprimez un objet JSON de noms d'en-têtes et de valeurs de chaîne sur stdout, puis quittez 0 dans les 10 secondes.

369* **Shell et répertoire de travail** : Claude Code exécute la commande via `sh`, ou via `cmd.exe` sur Windows. Le répertoire de travail est le répertoire de configuration, qui est `~/.claude` ou [`CLAUDE_CONFIG_DIR`](/docs/fr/env-vars#variables). Donnez un chemin absolu ou une commande sur `PATH`, parce qu'un chemin relatif se résout par rapport à ce répertoire, pas au projet de l'utilisateur.

370* **Variables que Claude Code supprime** : quand la commande est définie dans une entrée `marketplace.json`, ou dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet, Claude Code supprime de l'environnement chaque variable dont le nom ressemble à un identifiant, par la [même règle qu'elle applique à un `headersHelper` MCP](/docs/fr/mcp#which-variables-a-helper-can-read). `ANTHROPIC_API_KEY` et `MY_REGISTRY_TOKEN` sont tous deux supprimés, donc faites en sorte que la commande lise son identifiant à partir d'un fichier ou d'un magasin d'identifiants. Cette suppression ne s'applique pas à une commande définie dans les paramètres utilisateur, un fichier `--settings`, ou les paramètres gérés.

371* **Variables que Claude Code définit** : `CLAUDE_CODE_MARKETPLACE_URL` et `CLAUDE_CODE_MARKETPLACE_NAME` pour la commande d'une source `url`, et `CLAUDE_CODE_PLUGIN_NAME` et `CLAUDE_CODE_PLUGIN_ARCHIVE_URL` pour la commande d'une entrée. `CLAUDE_CODE_MARKETPLACE_NAME` n'est pas défini sur la première récupération après qu'un utilisateur ajoute une marketplace par URL, parce que cette récupération est ce qui fournit le nom.

372 

373Une commande qui frappe un jeton porteur imprime un objet comme celui-ci :

374 

375```json theme={null}

376{"Authorization": "Bearer eyJhbGciOiJSUzI1NiJ9"}

377```

378 

379<h3 id="when-claude-code-skips-a-headershelper-command-or-drops-its-output">

380 Quand Claude Code ignore une commande headersHelper ou supprime sa sortie

381</h3>

382 

383Une commande `headersHelper` ne s'exécute pas, ou les en-têtes de `headers` ou de la sortie de la commande sont supprimés, quand l'un des éléments suivants s'applique :

384 

385* **La commande échoue** : si la commande quitte non-zéro, s'exécute au-delà de 10 secondes, ou imprime autre chose qu'un objet JSON de valeurs de chaîne, la récupération ou le téléchargement pour lequel la commande a été exécutée ne se produit pas.

386* **L'URL de marketplace ne commence pas par `https://`** : la commande de cette source `url` ne s'exécute pas, et les demandes ne portent que les en-têtes listés dans son champ `headers`.

387* **La redirection quitte l'origine** : quand un téléchargement est redirigé hors de l'origine de l'URL d'archive, la demande redirigée ne porte pas de valeurs `headers` ou de sortie de commande de la source `url` de marketplace ou de l'entrée de plugin.

388* **L'entrée définit un en-tête de routage ou d'identité** : Claude Code supprime les noms de routage de demande et d'identité de client comme `Host`, `Cookie`, et `X-Forwarded-*` de `headers` et de la sortie de commande d'une entrée, et garde les noms d'authentification comme `Authorization`. Chaque entrée `marketplace.json` est filtrée de cette façon. Pour une entrée de plugin en ligne dans les paramètres, voir [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces).

389* **La commande est définie dans les paramètres d'un répertoire `--add-dir`** : la commande est ignorée, sur une source `url` et sur une [entrée de plugin en ligne](/docs/fr/settings-reference#extraknownmarketplaces) de même, et seuls les `headers` de ce fichier sont envoyés.

390* **Les paramètres gérés bloquent la commande** : définir [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources) à `true` bloque les commandes `headersHelper`, et [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) les bloque aussi sauf si `disableCommandPluginSources` est explicitement `false`. Sous l'un ou l'autre bloc, Claude Code exécute toujours la commande pour une marketplace que les paramètres gérés eux-mêmes déclarent.

391 

392<h3 id="how-users-accept-a-headershelper-command">

393 Comment les utilisateurs acceptent une commande headersHelper

394</h3>

395 

396Un utilisateur accepte la commande d'une entrée de plugin chaque fois qu'il installe ou met à jour ce seul plugin par lui-même. Il le fait à partir de la vue propre du plugin dans `/plugin`, ou avec `claude plugin install` ou `claude plugin update`. Claude Code affiche la commande et l'URL d'archive, et exécute la commande uniquement après que l'utilisateur l'accepte.

397 

398Dans un shell non-interactif, passez [`--yes`](/docs/fr/plugins/cli-reference#plugin-install) pour accepter la commande. Pour accepter uniquement la commande qu'une exécution `--json` précédente a affichée, passez [`--accept-command`](/docs/fr/plugins/cli-reference#plugin-install) avec le `sha256` que l'exécution a signalé.

399 

400Claude Code exécute uniquement la commande qu'il a affichée, pour l'URL d'archive qu'il a affichée. Si la commande ou l'URL d'archive de l'entrée a changé entre-temps, Claude Code refuse l'installation ou la mise à jour. Un changement dans la chaîne de requête seul ne compte pas.

401 

402<h3 id="installs-and-updates-that-refuse-the-command-instead-of-asking">

403 Installations et mises à jour qui refusent une commande au lieu de demander

404</h3>

405 

406Sur toute opération autre qu'une installation ou une mise à jour d'un seul plugin, Claude Code n'exécute pas la commande d'une entrée ni ne télécharge son archive. Le plugin reste à sa version installée ou reste désinstallé, et l'utilisateur voit l'un de ces résultats :

407 

408* **Installation de plusieurs plugins à la fois, à partir d'une suggestion de plugin, ou en tant que dépendance d'un autre plugin** : Claude Code refuse le plugin qui a la commande et dirige l'utilisateur à la vue propre de ce plugin dans `/plugin`. Les autres plugins dans une installation en masse s'installent toujours. Un plugin qui dépend du plugin refusé échoue à s'installer jusqu'à ce que l'utilisateur installe le plugin refusé par lui-même.

409* **Mise à jour automatique en arrière-plan, ou démarrage de session pour un plugin dont l'archive n'a jamais été téléchargée** : Claude Code énumère le plugin dans l'onglet Erreurs `/plugin` pour que l'utilisateur sache l'installer ou le mettre à jour lui-même.

410 

411<h3 id="when-a-marketplace-url-sources-command-runs">

412 Quand la commande d'une source `url` de marketplace s'exécute

413</h3>

414 

415Vous déclarez la `headersHelper` d'une source `url` de marketplace dans un fichier de paramètres, comme une entrée [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces), plutôt que dans le catalogue que la marketplace publie. Claude Code ne demande donc pas à l'utilisateur de l'accepter à chaque installation ou mise à jour. Au lieu de cela, le fichier de paramètres qui la déclare décide quand Claude Code l'exécute :

416 

417| Fichier de paramètres | Quand Claude Code exécute la commande |

418| :------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

419| Paramètres utilisateur, un fichier `--settings`, ou un fichier de paramètres gérés sur la machine | Sans demander, y compris lors d'une actualisation de marketplace en arrière-plan |

420| Le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet | Uniquement après que l'utilisateur accepte la [boîte de dialogue de confiance d'espace de travail](/docs/fr/permissions#what-runs-before-you-trust-a-folder) pour ce dossier lui-même. Une session `-p` ou SDK ne compte pas comme l'accepter, et la confiance accordée à un dossier parent non plus |

421| Paramètres gérés par serveur | Dans une session interactive, uniquement après que l'utilisateur approuve les paramètres livrés dans la [boîte de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) |

422 

423Pour une [entrée de plugin en ligne](/docs/fr/settings-reference#extraknownmarketplaces) dans l'un de ces fichiers, Claude Code exige la même confiance de dossier ou approbation de paramètres que pour une commande au niveau de la marketplace dans ce fichier, et l'utilisateur accepte aussi la commande de l'entrée à chaque installation ou mise à jour.

424 

425<h2 id="depend-on-and-recommend-other-plugins">

426 Dépendre d'autres plugins et les recommander

427</h2>

428 

429Une entrée peut déclarer des dépendances sur d'autres plugins.

430 

431* **Plages de version** : une dépendance peut porter une plage semver.

432* **Dépendances entre marketplaces** : une dépendance d'une autre marketplace s'installe uniquement quand votre marketplace énumère cette marketplace dans `allowCrossMarketplaceDependenciesOn`.

433 

434Pour les plages de version, la convention de balise git `<plugin>--v<version>` qu'elles se résolvent par rapport à, et la confiance entre marketplaces, voir [Dépendances de plugin](/docs/fr/plugins/dependencies).

435 

436Pour que Claude Code suggère un plugin quand un projet le correspond, ajoutez un bloc `relevance` à l'entrée avec les signaux qui identifient le projet. Les utilisateurs voient les suggestions de votre marketplace uniquement quand un administrateur l'énumère dans `pluginSuggestionMarketplaces`. Pour les signaux et l'étape d'activation, voir [Pertinence du plugin](/docs/fr/plugins/relevance).

437 

438<h2 id="work-around-what-a-marketplace-can’t-do">

439 Contourner ce qu'une marketplace ne peut pas faire

440</h2>

441 

442Certaines choses que les propriétaires demandent n'ont pas de champ dans `marketplace.json`. Voici l'option la plus proche pour chacune :

443 

444* **Restreindre ce que d'autres utilisateurs installent** : la liste d'autorisation de marketplace est un paramètre géré, `strictKnownMarketplaces`. Voir [Restreindre ce que les utilisateurs peuvent installer](/docs/fr/plugins/org#restrict-what-users-can-install).

445* **Installer ou activer un plugin sans que l'utilisateur le demande** : aucun champ d'entrée n'installe un plugin. Les `enabledPlugins` gérés le font pour une flotte ; voir [Pré-installer et exiger des plugins](/docs/fr/plugins/org#pre-install-and-require-plugins).

446* **Afficher des entrées différentes à différents utilisateurs** : les entrées ne portent pas de champ d'audience, et chaque utilisateur qui ajoute la marketplace voit le catalogue entier. Hébergez des marketplaces séparées pour des audiences séparées.

447* **Marquer un plugin comme obsolète** : il n'y a pas d'état d'obsolescence. L'option est de supprimer l'entrée, de mapper son nom à `null` dans `renames`, et éventuellement de définir `forceRemoveDeletedPlugins`.

448* **Activer la mise à jour automatique pour vos utilisateurs** : chaque utilisateur l'active sous **Marketplaces** dans `/plugin`, ou un administrateur définit `autoUpdate` dans les paramètres gérés. Voir [Activer la mise à jour automatique](#turn-on-auto-update).

449* **Porter les identifiants git** : aucun champ de marketplace ne détient un jeton git. L'accès à une marketplace ou un plugin hébergé sur git suit la configuration git de l'utilisateur, selon [Accorder l'accès à une marketplace privée](#grant-access-to-a-private-marketplace). Pour les sources `archive`, une entrée peut définir [`headers` ou `headersHelper`](#authenticate-archive-downloads) à la place.

450 

451<h2 id="next-steps">

452 Étapes suivantes

453</h2>

454 

455* [Référence de marketplace](/docs/fr/plugins/marketplace-reference) : champs `marketplace.json`, types de source, et messages de validation

456* [Gérer les plugins pour votre organisation](/docs/fr/plugins/org) : exiger, restreindre, ou ensemencer votre marketplace sur les machines de votre organisation

457* [Dépendances de plugin](/docs/fr/plugins/dependencies) : étiqueter les versions pour que les plugins qui dépendent du vôtre puissent résoudre les versions

458* [Dépanner les plugins](/docs/fr/plugins/troubleshooting) : les erreurs que vos utilisateurs voient lors de l'ajout ou de la mise à jour à partir de votre marketplace

plugins/install.md +418 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Installer et gérer les plugins

6 

7> Installez les plugins Claude Code à partir d'une marketplace sur n'importe quelle surface que vous utilisez, choisissez une portée d'installation et mettez-les à jour ou supprimez-les ultérieurement.

8 

9L'installation d'un plugin ajoute ses skills, agents, hooks et serveurs MCP à Claude Code sur votre machine.

10 

11Cette page s'adresse à toute personne utilisant des plugins sur sa propre machine ou son compte, que ce soit dans le terminal, l'application de bureau, un IDE ou une session cloud : elle couvre l'installation, le choix d'une portée, l'ajout de marketplaces et la mise à jour des plugins.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Vous utilisez le chat claude.ai ou Cowork, pas Claude Code** : consultez [Plugins sur claude.ai et dans Cowork](https://claude.com/docs/plugins/overview)

17 * **Claude Code a affiché une erreur** : trouvez-la dans [Dépanner les plugins](/docs/fr/plugins/troubleshooting)

18</Note>

19 

20Commencez par [Installer un plugin](#install-a-plugin). Si quelqu'un vous a envoyé une commande d'installation dont le nom `@` n'est pas `claude-plugins-official`, [ajoutez d'abord cette marketplace](#add-a-marketplace).

21 

22<h2 id="install-a-plugin">

23 Installer un plugin

24</h2>

25 

26À titre d'exemple, cette section installe [`commit-commands`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/commit-commands) à partir de [la marketplace officielle d'Anthropic](/docs/fr/plugins/anthropic-marketplaces), qui ajoute des commandes pour valider, pousser et ouvrir des demandes de tirage.

27 

28Les mêmes étapes installent n'importe quel autre plugin : remplacez son nom et le nom de sa marketplace partout où `commit-commands` et `claude-plugins-official` apparaissent. Si ce plugin provient d'une marketplace différente, [ajoutez d'abord la marketplace](#add-a-marketplace).

29 

30Choisissez l'onglet correspondant à l'endroit où vous exécutez Claude Code.

31 

32<Tabs>

33 <Tab title="Terminal">

34 Démarrez Claude Code avec `claude` dans votre projet, puis :

35 

36 <Steps>

37 <Step title="Ouvrez les détails du plugin avec la commande d'installation">

38 Exécutez `/plugin install` avec le nom du plugin et la marketplace. Dans une session, cette commande n'installe pas immédiatement : elle ouvre le panneau `/plugin` sur les détails de ce plugin afin que vous puissiez l'examiner et choisir d'abord une portée.

39 

40 ```text theme={null}

41 /plugin install commit-commands@claude-plugins-official

42 ```

43 

44 Pour parcourir à la place, exécutez `/plugin` sans nom de plugin : le panneau s'ouvre sur l'onglet **Discover**, qui répertorie les plugins de chaque marketplace que vous avez ajoutée, et vous pouvez taper pour rechercher, puis appuyer sur **Entrée** sur un plugin pour ouvrir ses détails.

45 </Step>

46 

47 <Step title="Examinez ce que le plugin ajoute">

48 Le volet des détails affiche la description du plugin. Il peut également afficher :

49 

50 * **Will install** : les commandes, agents, skills, hooks et serveurs MCP et LSP que le plugin ajoute.

51 * **Last updated** : affiché pour un plugin dans la marketplace officielle d'Anthropic.

52 * **Context cost** : pour un plugin dans la marketplace officielle d'Anthropic, deux estimations de tokens. **Every turn** est ce que le plugin ajoute à chaque message que vous envoyez, et **When invoked** est ce que ses skills et agents ajoutent une fois que Claude les charge. Les estimations apparaissent lorsque vous ouvrez le plugin en nommant sa marketplace, comme le fait la commande de l'étape 1, ou à partir de l'onglet **Marketplaces**. Le volet des détails auquel vous accédez à partir de la liste **Discover** ne les affiche pas.

53 

54 Les plugins d'une marketplace locale ou personnalisée peuvent afficher `Components will be discovered at installation` à la place.

55 

56 Un plugin peut exécuter des hooks et des serveurs MCP, alors lisez le volet avant d'installer. Consultez [Plugin security and trust](/docs/fr/plugins/security).

57 </Step>

58 

59 <Step title="Choisissez une portée">

60 Sélectionnez l'une des trois options d'installation :

61 

62 * **Install for you (user scope)** : vous obtenez le plugin dans chaque projet sur cette machine

63 * **Install for all collaborators on this repository (project scope)** : il est activé pour tous ceux qui travaillent dans ce référentiel

64 * **Install for you, in this repo only (local scope)** : vous l'obtenez dans ce référentiel uniquement

65 

66 [Choisir une portée d'installation](#choose-an-install-scope) indique quel fichier de paramètres chacun écrit et lequel s'applique lorsque le même plugin est défini à plusieurs niveaux.

67 

68 Après avoir sélectionné une portée, Claude Code installe le plugin ainsi que toutes les dépendances qu'il déclare, puis imprime un résumé d'installation.

69 </Step>

70 

71 <Step title="Lisez le résumé d'installation">

72 La dernière phrase du résumé vous indique si le plugin est utilisable dans cette session :

73 

74 * **Active now** : `Plugin is now active.` Aucun rechargement n'est nécessaire.

75 * **Reload needed** : `Run /reload-plugins to activate.` Le panneau se ferme et Claude Code exécute ce rechargement pour vous. Si le rechargement [invaliderait le cache du prompt](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin), il vous avertit et laisse le plugin en attente à la place. Exécutez `/reload-plugins --force` pour l'activer quand même, ce qui coûte une demande non mise en cache.

76 * **Load failed** : `The plugin couldn't be loaded`. Ouvrez l'onglet **Errors** dans `/plugin` pour connaître la raison, puis consultez [After install: plugin not working](/docs/fr/plugins/troubleshooting#plugin-installed-but-not-working).

77 </Step>

78 

79 <Step title="Confirmez que le plugin fonctionne">

80 Tapez `/` et recherchez les skills du plugin sous son nom, sous la forme `/<plugin>:<skill>`. Pour `commit-commands`, `/commit-commands:commit` apparaît. Deux autres endroits répertorient également le plugin :

81 

82 * Ouvrez l'onglet **Installed** dans `/plugin`, qui répertorie le plugin avec sa portée.

83 * Dans votre shell, exécutez `claude plugin list`, qui imprime la même liste avec les lignes `Version`, `Scope` et `Status`.

84 

85 Si `/commit-commands:commit` n'apparaît pas, consultez [After install: plugin not working](/docs/fr/plugins/troubleshooting#plugin-installed-but-not-working).

86 </Step>

87 </Steps>

88 

89 L'installation à partir de n'importe quelle autre marketplace nécessite une étape supplémentaire d'abord : [ajoutez la marketplace](#add-a-marketplace). Claude Code ajoute la marketplace officielle d'Anthropic pour vous la première fois que vous démarrez une session de terminal interactive, c'est pourquoi l'exemple ignore cette étape. Si vous avez trouvé un plugin sur [claude.com/marketplace](https://claude.com/marketplace), son bouton **Claude Code** copie la commande d'installation sous sa [forme shell](#install-from-your-shell), `claude plugin install <name>@claude-plugins-official`.

90 </Tab>

91 

92 <Tab title="Application de bureau">

93 Dans une session locale ou SSH dans l'onglet **Code** de l'application de bureau :

94 

95 <Steps>

96 <Step title="Ouvrez le navigateur de plugins">

97 Cliquez sur le bouton **+** à côté de la zone de saisie et sélectionnez **Plugins**, puis **Add plugin**. Le navigateur de plugins s'ouvre avec les plugins de vos marketplaces.

98 </Step>

99 

100 <Step title="Sélectionnez le plugin">

101 Trouvez `commit-commands` et sélectionnez-le.

102 </Step>

103 

104 <Step title="Choisissez une portée">

105 Choisissez une [portée](#choose-an-install-scope) : votre compte utilisateur, ce projet ou local uniquement.

106 </Step>

107 </Steps>

108 

109 Pour activer, désactiver ou désinstaller ultérieurement, utilisez **+ > Plugins > Manage plugins**. Le navigateur de plugins n'est pas disponible dans les sessions cloud de l'application de bureau. Consultez [Install plugins in the desktop app](/docs/fr/desktop#install-plugins).

110 </Tab>

111 

112 <Tab title="VS Code">

113 Dans le panneau Claude Code dans VS Code :

114 

115 <Steps>

116 <Step title="Ouvrez Manage plugins">

117 Tapez `/plugins` dans la zone de saisie pour ouvrir **Manage plugins**.

118 </Step>

119 

120 <Step title="Installez le plugin">

121 Sur l'onglet **Plugins**, recherchez `commit-commands` et cliquez sur **Install**. Si l'onglet ne répertorie aucun plugin, ajoutez d'abord `anthropics/claude-plugins-official` sur l'onglet **Marketplaces**.

122 </Step>

123 

124 <Step title="Choisissez une portée">

125 Choisissez une [portée](#choose-an-install-scope) : **Install for you**, **Install for this project** ou **Install locally**.

126 </Step>

127 </Steps>

128 

129 Vos modifications s'appliquent aux sessions ouvertes sans redémarrage. Consultez [Manage plugins in VS Code](/docs/fr/vs-code#manage-plugins).

130 </Tab>

131 

132 <Tab title="Session cloud">

133 Une [session cloud](/docs/fr/cloud-environments), y compris [le navigateur à claude.ai/code](/docs/fr/claude-code-on-the-web), n'a pas de navigateur de plugins et ne charge pas les plugins que vous avez installés sur votre propre machine ou ceux que le `.claude/settings.json` de votre référentiel active. Pour les plugins que votre organisation distribue via les paramètres gérés, consultez [Manage plugins for your organization](/docs/fr/plugins/org).

134 

135 Consultez [quelles parties de votre configuration sont également disponibles dans une session cloud](/docs/fr/cloud-environments#what-carries-over-from-your-setup) pour le reste de votre configuration.

136 </Tab>

137</Tabs>

138 

139<h3 id="choose-an-install-scope">

140 Choisir une portée d'installation

141</h3>

142 

143La portée d'installation d'un plugin détermine qui obtient le plugin et quel fichier de paramètres l'enregistre comme activé :

144 

145* **User scope** : le plugin est activé pour vous dans chaque projet sur cette machine. L'entrée va dans `enabledPlugins` dans `~/.claude/settings.json`.

146* **Project scope** : le plugin est activé pour tous ceux qui travaillent dans ce référentiel. L'entrée va dans `.claude/settings.json`, que vous validez.

147* **Local scope** : le plugin est activé pour vous dans ce référentiel uniquement. L'entrée va dans `.claude/settings.local.json`.

148 

149Certains plugins sont définis par leur auteur pour démarrer désactivés, via le champ [`defaultEnabled`](/docs/fr/plugins/manifest-reference#defaultenabled). Un tel plugin est installé mais reste désactivé jusqu'à ce que vous l'activiez avec `claude plugin enable <name>` dans votre shell, ou à partir de l'onglet **Installed** de `/plugin` dans une session.

150 

151Lorsque le même plugin est défini à plusieurs portées, le paramètre local remplace le paramètre du projet, et le paramètre du projet remplace le paramètre utilisateur. Consultez [Find where a plugin is enabled](/docs/fr/plugins/loading#find-where-a-plugin-is-enabled) pour la règle complète.

152 

153Le terminal, les sessions locales de l'application de bureau et l'extension VS Code sur un ordinateur lisent les mêmes fichiers de paramètres, donc un plugin que vous installez à la portée utilisateur dans l'un d'eux est disponible dans les deux autres.

154 

155<h3 id="other-places-you-run-claude-code">

156 JetBrains, exécutions non interactives et Agent SDK

157</h3>

158 

159Certains endroits où vous exécutez Claude Code n'ont pas leur propre navigateur de plugins :

160 

161* **JetBrains IDEs** : le plugin JetBrains exécute Claude Code dans le terminal de l'IDE, donc utilisez les étapes de l'onglet **Terminal** là-bas.

162* **`claude -p` et autres exécutions non interactives** : `/plugin` ne s'exécute pas, et Claude répond `Plugin isn't available in this environment.` Les plugins que vous avez déjà installés se chargent. Installez et gérez-les à partir de votre shell avec les [commandes `claude plugin`](#install-from-your-shell).

163* **Agent SDK** : chargez les plugins via l'option plugin du SDK. Consultez [Load plugins in the Agent SDK](/docs/fr/agent-sdk/plugins).

164 

165Si Claude Code signale qu'un plugin activé dans le `.claude/settings.json` du référentiel n'est pas installé, consultez [Enabled in project settings but not installed](/docs/fr/plugins/loading#enabled-in-project-settings-but-not-installed).

166 

167<Tip>

168 Si vous êtes un auteur de plugin testant une copie de votre plugin sur disque, démarrez Claude Code à partir de votre shell avec `--plugin-dir` pour le charger pour une session au lieu de l'installer. Consultez [Flags that load a plugin for one session](/docs/fr/plugins/cli-reference#flags-that-load-a-plugin-for-one-session).

169</Tip>

170 

171<h3 id="plugins-from-your-claude-ai-account">

172 Plugins de votre compte claude.ai

173</h3>

174 

175Votre compte claude.ai est une source séparée de plugins, aux côtés des marketplaces à partir desquelles vous installez :

176 

177* **Ce qui arrive** : chaque plugin que vous activez pour votre compte claude.ai, et chaque plugin que votre organisation active pour ses membres. Dans une session de terminal, ils se synchronisent en arrière-plan chaque fois que vous démarrez Claude Code en étant connecté avec ce compte ; dans les sessions Cowork, ils se téléchargent au démarrage de la session.

178* **Où vous les voyez** : dans `/plugin` et `claude plugin list` sous l'ID `<name>@synced`. Vous pouvez en désactiver un à votre propre portée sauf si votre organisation l'exige.

179* **Ce qui ne va pas dans l'autre sens** : les plugins que vous installez avec `/plugin` ou `claude plugin install` restent sur cette machine et ne sont pas ajoutés à votre compte claude.ai.

180 

181Pour le calendrier de synchronisation, les exigences de connexion et la désactivation de la synchronisation, consultez [Plugins synced from claude.ai](/docs/fr/plugins/loading#synced-plugins).

182 

183<h3 id="install-from-your-shell">

184 Installer à partir de votre shell

185</h3>

186 

187Exécutez `claude plugin install` dans votre shell pour installer un plugin sans démarrer une session Claude Code, par exemple à partir d'un script de configuration.

188 

189* **Portée** : portée utilisateur par défaut. Passez `--scope project` ou `--scope local` pour le modifier.

190* **Quand les plugins se chargent** : les plugins qu'il installe se chargent la prochaine fois que vous démarrez Claude Code, ou lorsque vous exécutez `/reload-plugins` dans une session déjà ouverte.

191* **La marketplace doit d'abord être ajoutée** : sur une machine où personne n'a ouvert une session Claude Code interactive, la marketplace officielle n'est pas enregistrée, donc un script qui installe à partir de celle-ci exécute `claude plugin marketplace add anthropics/claude-plugins-official` avant l'installation.

192 

193```bash theme={null}

194claude plugin install formatter@your-org --scope project

195```

196 

197La commande imprime `Successfully installed plugin: formatter@your-org (scope: project)` quand elle se termine.

198 

199Certains plugins s'installent en exécutant une commande que leur marketplace nomme, appelée une [`command` source](/docs/fr/plugins/marketplace-reference#command-plugin-source). Claude Code vous montre cette commande et vous demande de l'accepter avant qu'elle ne s'exécute. Un script n'a personne pour répondre à cette invite, donc passez `--yes` là pour l'accepter.

200 

201Pour chaque drapeau `claude plugin install`, consultez [plugin install](/docs/fr/plugins/cli-reference#plugin-install).

202 

203<h2 id="add-a-marketplace">

204 Ajouter une marketplace

205</h2>

206 

207Vous n'avez besoin de cette section que lorsque le plugin que vous voulez n'est pas dans la marketplace officielle d'Anthropic, par exemple celui qu'un collègue a publié ou celui de la marketplace communautaire d'Anthropic.

208 

209Une marketplace est un catalogue de plugins, et Claude Code doit connaître une marketplace avant de pouvoir installer à partir de celle-ci. Vous ajoutez une marketplace une fois. Après cela, ses plugins apparaissent sur l'onglet **Discover** et s'installent avec `/plugin install <plugin>@<marketplace>` dans une session ou `claude plugin install <plugin>@<marketplace>` dans votre shell, où `<marketplace>` est le nom sous lequel la marketplace s'est enregistrée. Pour faire les deux en une seule étape, consultez [Add a marketplace and install in one command](#add-a-marketplace-and-install-in-one-command).

210 

211Dans une session Claude Code, exécutez `/plugin marketplace add` suivi de la source de la marketplace : un référentiel GitHub, un référentiel git sur n'importe quel hôte, un répertoire ou fichier local, ou un `marketplace.json` hébergé.

212 

213| Source | Ce que vous tapez | Exemple |

214| :-------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- |

215| Référentiel GitHub | `owner/repo`. Ajoutez `#ref` pour épingler une branche ou une balise. | `/plugin marketplace add anthropics/claude-code`, ou `/plugin marketplace add your-org/plugins#v1.2.0` pour épingler la balise `v1.2.0` |

216| Référentiel Git sur n'importe quel hôte | L'URL de clonage complète. Ajoutez `#ref` pour épingler une branche ou une balise. | `/plugin marketplace add https://gitlab.example.com/your-group/your-marketplace.git#v1.0.0` |

217| Répertoire ou fichier local | Un chemin relatif ou absolu vers un répertoire qui contient `.claude-plugin/marketplace.json`, ou vers le fichier JSON lui-même. Commencez un chemin relatif par `./` ou `../`, car Claude Code lit un `name/name` nu comme un référentiel GitHub. | `/plugin marketplace add ./my-marketplace` |

218| `marketplace.json` hébergé | Son URL `https://` | `/plugin marketplace add https://example.com/marketplace.json` |

219 

220À partir de votre shell, `claude plugin marketplace add` prend les mêmes sources.

221 

222<Tip>

223 `/plugin market` fonctionne également comme une forme plus courte de `/plugin marketplace`.

224</Tip>

225 

226Incluez le préfixe `https://` sur chaque URL, ou utilisez la forme `git@host:path` pour SSH. Si vous tapez un `gitlab.example.com/your-group/your-marketplace.git` nu, Claude Code le lit comme un raccourci GitHub `owner/repo` et le rejette.

227 

228Quand la commande réussit, elle imprime `Successfully added marketplace: <name>`, et les plugins de la marketplace apparaissent sur l'onglet **Discover** la prochaine fois que vous ouvrez `/plugin`, sans rechargement nécessaire. S'il échoue, faites correspondre le message d'erreur dans [Troubleshoot plugins](/docs/fr/plugins/troubleshooting#add-a-marketplace).

229 

230<h3 id="add-a-marketplace-and-install-in-one-command">

231 Ajouter une marketplace et installer en une seule commande

232</h3>

233 

234Pour installer un plugin à partir d'une marketplace que vous n'avez pas encore ajoutée, exécutez `/plugin install` dans une session Claude Code et nommez la source de la marketplace avec `--marketplace`. Nécessite Claude Code v2.1.275 ou ultérieur.

235 

236```text theme={null}

237/plugin install deploy-helper --marketplace your-org/plugins

238```

239 

240La source prend [les mêmes formes que `/plugin marketplace add`](#add-a-marketplace), telles que GitHub `owner/repo`, une URL git ou un chemin local, sauf qu'elle ne peut pas contenir d'espaces. Donnez le nom du plugin seul, sans suffixe `@marketplace`.

241 

242Si vous n'avez pas encore ajouté cette marketplace, Claude Code affiche la source qu'il a résolue et vous demande de confirmer avant de l'ajouter. Une fois la marketplace ajoutée, les détails du plugin s'ouvrent et vous choisissez une [portée d'installation](#install-a-plugin). Si la source correspond à une marketplace que vous avez déjà ajoutée, Claude Code ignore la confirmation et ouvre les détails du plugin dans cette marketplace.

243 

244<h3 id="add-a-private-marketplace">

245 Ajouter une marketplace privée

246</h3>

247 

248Une marketplace privée est celle dans un référentiel auquel vous avez besoin d'identifiants pour cloner, sur GitHub ou n'importe quel autre hôte git. Vous l'ajoutez avec la même commande `/plugin marketplace add` ou `claude plugin marketplace add` qu'une marketplace publique. Claude Code la clone avec les identifiants git déjà sur votre machine et ne demande jamais, donc chaque façon de se connecter a une exigence :

249 

250* **HTTPS** : vos assistants d'identifiants git s'appliquent, donc l'accès que vous avez configuré avec `gh auth login`, le Keychain macOS ou `git-credential-store` fonctionne. Les invites interactives sont supprimées, donc un hôte auquel vous ne vous êtes jamais authentifié échoue au lieu de demander un mot de passe.

251* **SSH** : l'hôte doit déjà être dans votre fichier `known_hosts` et la clé doit fonctionner sans invite de phrase secrète, car les invites d'empreinte d'hôte et de phrase secrète sont également supprimées.

252* **Raccourci GitHub `owner/repo`** : Claude Code vérifie si votre clé SSH s'authentifie à `github.com`, puis clone sur SSH si c'est le cas et sur HTTPS sinon. Définissez [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/fr/env-vars#variables) pour ignorer cette vérification et toujours cloner sur HTTPS.

253 

254Les mêmes identifiants s'appliquent lorsque vous exécutez `/plugin install`, `/plugin marketplace update` et `claude plugin update`.

255 

256Sur un hôte GitHub Enterprise Server, consultez [Plugin marketplaces on GHES](/docs/fr/github-enterprise-server#plugin-marketplaces-on-ghes) pour les identifiants que chaque opération nécessite.

257 

258Si votre organisation enregistre la marketplace pour vous via les paramètres gérés, vous ne l'ajoutez pas vous-même. Consultez [Pre-install and require plugins](/docs/fr/plugins/org#pre-install-and-require-plugins).

259 

260<h3 id="add-from-claude-ai">

261 Ajouter une marketplace à partir de claude.ai

262</h3>

263 

264Dans les sessions de terminal où [les plugins se synchronisent à partir de votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins), claude.ai peut également répertorier les marketplaces de plugins pour vous, telles que la bibliothèque de plugins de votre organisation et vos propres téléchargements claude.ai. Vous en ajoutez une par son nom plutôt que par une source. L'ajout d'une marketplace à partir de claude.ai nécessite Claude Code v2.1.273 ou ultérieur.

265 

266Ajoutez une marketplace claude.ai à partir du panneau `/plugin` ou à partir de votre shell :

267 

268* **À l'intérieur d'une session** : exécutez `/plugin` et allez à l'onglet **Marketplaces**, qui répertorie les marketplaces à partir de claude.ai. Sélectionnez-en une là pour l'ajouter.

269* **À partir de votre shell** : exécutez `claude plugin marketplace list`, qui les imprime dans une section `From claude.ai:`. Ensuite, exécutez `claude plugin marketplace add` avec le drapeau `--claudeai` et le nom affiché dans la liste.

270 

271Par exemple, cette commande ajoute une marketplace nommée `claudeai-organization-library` :

272 

273```bash theme={null}

274claude plugin marketplace add --claudeai claudeai-organization-library

275```

276 

277Claude Code enregistre la marketplace sous un nom local qui commence par `claudeai-`, dérivé du nom que claude.ai la répertorie. Par exemple, une marketplace répertoriée comme « Organization library » devient `claudeai-organization-library`. Installez ses plugins par ce nom, par exemple avec `claude plugin install <plugin>@claudeai-organization-library`.

278 

279Si vous vous déconnectez ou vous connectez à une organisation claude.ai différente, la marketplace reste configurée mais n'affiche aucun plugin, et les plugins que vous avez déjà installés à partir de celle-ci continuent de se charger.

280 

281La section `From claude.ai:` peut également répertorier les marketplaces basées sur git partagées via claude.ai, et elle imprime une source pour chacune d'elles. Ajoutez-les par cette source comme dans [Add a marketplace](#add-a-marketplace), pas avec `--claudeai`.

282 

283<h2 id="manage-installed-plugins">

284 Gérer les plugins installés

285</h2>

286 

287L'onglet **Installed** dans `/plugin` répertorie vos plugins avec des actions pour activer, désactiver, mettre à jour ou désinstaller chacun. Dans une session Claude Code, exécutez `/plugin` et appuyez sur **Tab** pour l'atteindre, ou exécutez `/plugin enable`, `/plugin disable` ou `/plugin uninstall` pour ouvrir le panneau et effectuer ce changement là. Les plugins désactivés sont regroupés sous un en-tête réduit en bas de la liste. Utilisez ces touches sur la liste :

288 

289* Tapez pour filtrer par nom ou description.

290* Appuyez sur **Espace** pour activer ou désactiver le plugin sélectionné, et **f** pour le marquer comme favori.

291* Appuyez sur **Entrée** pour ouvrir les détails d'un plugin. Le menu là offre **Disable plugin** ou **Enable plugin**, **Update now** et **Uninstall**. Les plugins qui prennent des paramètres offrent également **Configure options**.

292 

293L'onglet peut également afficher les plugins à la portée **Managed**. Votre organisation les a installés via les [paramètres gérés](/docs/fr/settings#settings-files), et vous ne pouvez pas les activer, désactiver ou les désinstaller ici.

294 

295Pour un plugin synchronisé que votre organisation exige sur claude.ai, consultez [Manage plugins synced from claude.ai](#manage-plugins-synced-from-claude-ai).

296 

297Lorsque vous fermez le panneau `/plugin` avec des modifications en attente que vous avez apportées, Claude Code exécute `/reload-plugins` pour vous pour les appliquer. Si le rechargement [invaliderait le cache du prompt](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin), il vous avertit et laisse les modifications en attente à la place. Exécutez `/reload-plugins --force` pour les appliquer quand même.

298 

299<h3 id="manage-plugins-synced-from-claude-ai">

300 Gérer les plugins synchronisés à partir de claude.ai

301</h3>

302 

303L'onglet **Installed** dans `/plugin` répertorie également les [plugins synchronisés à partir de votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins), avec `synced` comme source. Les plugins synchronisés apparaissent dans les sessions de terminal sur Claude Code v2.1.273 ou ultérieur.

304 

305* **Activer ou désactiver** : utilisez l'onglet **Installed**, sauf si votre organisation a marqué le plugin comme requis.

306* **Supprimer** : désactivez le plugin sur claude.ai.

307 

308Lorsque Claude Code synchronise un plugin ajouté, mis à jour ou supprimé dans une session interactive, vous voyez `Plugins changed. Run /reload-plugins to activate.` Exécutez `/reload-plugins` pour charger le changement dans cette session, ou laissez-le pour la prochaine fois que vous démarrez Claude Code.

309 

310<h3 id="uninstall-a-plugin-the-project-enables">

311 Désinstaller un plugin que le projet active

312</h3>

313 

314Lorsque vous choisissez **Uninstall** pour un plugin que le `.claude/settings.json` de ce référentiel active, que ce soit à partir de l'onglet **Installed** ou avec `/plugin uninstall`, Claude Code vous demande si vous voulez le désactiver pour vous ou le désinstaller pour tout le monde :

315 

316* **Disable for me** : appuyez sur **y**. Claude Code écrit `false` pour le plugin dans votre `.claude/settings.local.json` et le laisse installé pour le projet.

317* **Uninstall for everyone** : appuyez sur **u**. Claude Code supprime le plugin du `.claude/settings.json` partagé.

318 

319<h3 id="see-what-an-installed-plugin-adds-to-your-sessions">

320 Voir ce qu'un plugin installé ajoute à vos sessions

321</h3>

322 

323Dans votre shell, exécutez `claude plugin details <name>` pour un plugin installé. La ligne `Always-on` est le nombre de tokens que le plugin ajoute à chaque session où il est activé, et les lignes par composant montrent quel skill ou agent contribue le plus. Pour la sortie complète et ce que chaque chiffre signifie, consultez [Measure what a plugin costs](/docs/fr/plugins/measure#measure-what-a-plugin-costs).

324 

325<h3 id="find-plugins-you-no-longer-use">

326 Trouver les plugins que vous n'utilisez plus

327</h3>

328 

329Sur l'onglet **Installed** dans `/plugin`, les plugins que vous avez installés vous-même et que vous n'avez pas utilisés récemment apparaissent sous un en-tête **Not used recently**, et les détails de chaque plugin affichent une ligne **Last used**. Utilisez cet en-tête et cette ligne pour trouver les plugins qui ajoutent toujours le coût de démarrage et de contexte, puis désactivez ou désinstallez-les.

330 

331<h3 id="plugins-with-dependencies">

332 Plugins avec dépendances

333</h3>

334 

335Un plugin peut déclarer d'autres plugins dont il dépend. Lorsque vous installez, désactivez ou désinstallez un tel plugin à partir d'une marketplace, Claude Code agit également sur ces dépendances :

336 

337* **Install** : Claude Code installe également et active les dépendances déclarées du plugin à la même portée. Le message de succès les répertorie.

338* **Enable** : Claude Code active également les dépendances du plugin qui sont installées mais désactivées. Si une dépendance déclarée n'est pas installée, l'activation échoue et le message vous dit de l'installer d'abord.

339* **Disable** : quand un autre plugin activé a toujours besoin de celui que vous avez nommé, Claude Code refuse et imprime une commande chaînée qui désactive les deux dans le bon ordre.

340* **Uninstall** : les dépendances auto-installées restent jusqu'à ce que vous exécutiez `claude plugin prune` dans votre shell ; consultez [plugin prune](/docs/fr/plugins/cli-reference#plugin-prune).

341 

342Si vous avez chargé le plugin avec `--plugin-dir` à la place, consultez [Test a plugin and its dependency locally](/docs/fr/plugins/dependencies#test-a-plugin-and-its-dependency-locally).

343 

344<h3 id="manage-plugins-from-your-shell">

345 Gérer les plugins à partir de votre shell

346</h3>

347 

348Vous pouvez également gérer les plugins sans démarrer une session Claude Code. Dans votre shell, exécutez `claude plugin install`, `enable`, `disable` ou `uninstall` comme des commandes de terminal ordinaires ; elles modifient les mêmes paramètres que le panneau `/plugin`. Chacun prend `--scope` pour cibler une portée, et utilise une portée par défaut lorsque vous l'omettez :

349 

350* `enable` et `disable` agissent sur la portée la plus spécifique dont les paramètres répertorient déjà le plugin.

351* `install` et `uninstall` agissent sur la portée utilisateur.

352 

353Par exemple, ces commandes désactivent et réactivent un plugin, puis le désinstallent à la portée du projet :

354 

355```bash theme={null}

356claude plugin disable formatter@your-org

357claude plugin enable formatter@your-org

358claude plugin uninstall formatter@your-org --scope project

359```

360 

361<h2 id="keep-plugins-updated">

362 Garder les plugins à jour

363</h2>

364 

365Les plugins se mettent à jour automatiquement lorsque la marketplace dont ils proviennent a la mise à jour automatique activée. Après le démarrage d'une session, Claude Code actualise ces marketplaces et met à jour les copies sur disque des plugins que vous avez installés à partir de celles-ci.

366 

367La session en cours conserve les versions qu'elle a déjà chargées. Après une mise à jour, vous voyez `Plugin updated: <name> · Run /reload-plugins to apply`, et la session suivante charge automatiquement les nouvelles versions.

368 

369Ce sont les paramètres par défaut de mise à jour automatique pour chaque type de marketplace :

370 

371* **On by default** : `claude-plugins-official` et les autres [noms de marketplace officiels](/docs/fr/plugins/security#official-marketplace-names) sauf `knowledge-work-plugins` et `first-party-plugins`, plus les [marketplaces ajoutées à partir de claude.ai](#add-from-claude-ai).

372* **Off by default** : chaque autre marketplace, y compris la marketplace communautaire, les marketplaces tierces et les marketplaces de développement local.

373 

374Pour quand la mise à jour automatique s'exécute, quels plugins elle ignore et les variables d'environnement qui la désactivent, consultez [When auto-update runs](/docs/fr/plugins/loading#when-auto-update-runs).

375 

376<h3 id="turn-auto-update-on-or-off-for-a-marketplace">

377 Activer ou désactiver la mise à jour automatique pour une marketplace

378</h3>

379 

380Dans une session Claude Code, exécutez `/plugin` et allez à l'onglet **Marketplaces**. Sélectionnez la marketplace, puis sélectionnez **Enable auto-update** ou **Disable auto-update**.

381 

382<h3 id="update-one-plugin-now">

383 Mettre à jour un plugin maintenant

384</h3>

385 

386Dans une session, ouvrez le plugin sur l'onglet **Installed** dans `/plugin` et sélectionnez **Update now**, ou dans votre shell exécutez `claude plugin update <plugin>@<marketplace>`.

387 

388<h3 id="auto-update-from-a-private-marketplace">

389 Mise à jour automatique à partir d'une marketplace privée

390</h3>

391 

392Pour une marketplace privée, consultez [What background auto-update does with credentials](/docs/fr/plugins/host-marketplace#what-background-auto-update-does-with-credentials) pour savoir comment les mises à jour automatiques en arrière-plan s'authentifient sur SSH et HTTPS, et [Troubleshoot plugins](/docs/fr/plugins/troubleshooting#add-a-marketplace) pour les messages que vous voyez quand elles échouent.

393 

394<h2 id="manage-marketplaces">

395 Gérer les marketplaces

396</h2>

397 

398L'onglet **Marketplaces** dans `/plugin` répertorie chaque marketplace que vous avez enregistrée, ainsi que sa source. Sélectionnez-en une pour parcourir ses plugins, mettre à jour son annonce, activer ou désactiver la mise à jour automatique, ou la supprimer.

399 

400Vous pouvez également répertorier, mettre à jour et supprimer les marketplaces avec des commandes, à partir de votre shell ou à l'intérieur d'une session :

401 

402| Action | Dans votre shell | À l'intérieur d'une session |

403| :---------------------------------------- | :---------------------------------------- | :---------------------------------- |

404| Répertorier les marketplaces | `claude plugin marketplace list` | `/plugin marketplace list` |

405| Mettre à jour l'annonce d'une marketplace | `claude plugin marketplace update <name>` | `/plugin marketplace update <name>` |

406| Supprimer une marketplace | `claude plugin marketplace remove <name>` | `/plugin marketplace remove <name>` |

407 

408Lorsque vous supprimez une marketplace, Claude Code désinstalle chaque plugin que vous avez installé à partir de celle-ci et supprime leurs entrées `enabledPlugins` de vos fichiers de paramètres. L'onglet **Marketplaces** nomme ces plugins avant de vous demander de confirmer.

409 

410<h2 id="next-steps">

411 Étapes suivantes

412</h2>

413 

414* [Les marketplaces d'Anthropic](/docs/fr/plugins/anthropic-marketplaces) : comment les marketplaces officielles, communautaires et de démonstration diffèrent et où parcourir chacune d'elles

415* [Référence de chargement des plugins](/docs/fr/plugins/loading) : pourquoi un plugin s'est chargé, ne s'est pas chargé, ou n'a pas changé après une mise à jour

416* [Sécurité et confiance des plugins](/docs/fr/plugins/security) : ce qu'il faut examiner avant d'installer un plugin à partir d'une marketplace que vous ne connaissez pas

417* [Dépanner les plugins](/docs/fr/plugins/troubleshooting) : messages d'erreur d'installation et de marketplace avec leurs corrections

418* [Créer un plugin](/docs/fr/plugins/create) : créez le vôtre

plugins/loading.md +424 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Référence du chargement des plugins

6 

7> Tracez d'où Claude Code charge chaque plugin, quel fichier de paramètres décide s'il se charge, et pourquoi une mise à jour n'a rien changé.

8 

9Utilisez cette page quand un plugin ne s'est pas chargé, a chargé une copie différente de celle attendue, ou n'a pas appliqué une mise à jour, et vous voulez voir quelle source, portée de paramètres, ou fichier sur disque a décidé cela. Elle donne les règles que Claude Code applique au démarrage d'une session et chaque fois que vous exécutez `/reload-plugins`. Vous pouvez aussi demander à Claude de lire cette page et diagnostiquer votre configuration.

10 

11<Note>

12 Ces cas sont couverts sur d'autres pages :

13 

14 * **Étapes d'installation, d'activation, de désactivation et de mise à jour** : voir [Installer et gérer les plugins](/docs/fr/plugins/install)

15 * **Vous avez un message d'erreur spécifique** : voir [Dépanner les plugins](/docs/fr/plugins/troubleshooting)

16</Note>

17 

18Commencez par [Vérifier à quel stade un plugin est arrivé](#check-which-stage-a-plugin-reached) pour les trois stades qu'un plugin installé traverse, ou allez à la section qui correspond à ce que vous voyez :

19 

20* Un plugin que vous avez désactivé se charge toujours : [Trouver où un plugin est activé](#find-where-a-plugin-is-enabled)

21* Une mise à jour n'a rien changé : [Versions et mises à jour](#versions-and-updates)

22* Vous regardez les fichiers sous `~/.claude/plugins/` : [Trouver les plugins sur disque](#find-plugins-on-disk)

23* Un plugin `--plugin-dir` ne s'est pas chargé, ou un plugin du même nom s'est chargé à la place : [Conflits de noms](#name-conflicts)

24 

25<h2 id="check-which-stage-a-plugin-reached">

26 Vérifier à quel stade un plugin est arrivé

27</h2>

28 

29Une entrée `enabledPlugins` devient un plugin que vous pouvez utiliser en stades : vos paramètres le déclarent, Claude Code le récupère sur disque, et la session en cours le charge. Quand un plugin ne se comporte pas comme un fichier de paramètres le suggère, vérifiez à quel stade il est arrivé :

30 

31* **Déclaré, dans les paramètres** : `enabledPlugins` dit quels plugins doivent être activés, et `extraKnownMarketplaces` dit quels marchés doivent exister. Quand vous exécutez `claude plugin marketplace add`, Claude Code écrit le marché dans `extraKnownMarketplaces` dans vos paramètres utilisateur ainsi que sur disque

32* **Récupéré, sur disque sous `~/.claude/plugins/`** : les enregistrements de ce que Claude Code a récupéré, et les fichiers récupérés eux-mêmes :

33 * `known_marketplaces.json` enregistre chaque marché que Claude Code a récupéré, avec sa `source`, `installLocation`, `lastUpdated`, et `autoUpdate`. Il y a un `known_marketplaces.json` par utilisateur, donc un marché que vous ajoutez dans un projet est disponible dans chaque projet

34 * `installed_plugins.json` enregistre chaque installation avec sa `scope`, `installPath`, et `version`

35 * `cache/` contient les fichiers du plugin

36* **Chargé, dans la session en cours** : l'ensemble de plugins que Claude Code a chargé au démarrage ou au dernier `/reload-plugins`. Les modifications des paramètres ou du disque ne atteignent cette couche que quand vous exécutez `/reload-plugins` ou démarrez une nouvelle session. C'est pourquoi `claude plugin update` se termine par `Restart to apply changes.` et les mises à jour en arrière-plan vous invitent avec `Run /reload-plugins to apply`

37 

38<h3 id="plugins-and-marketplaces-that-aren’t-on-disk-at-session-start">

39 Plugins et marchés qui ne sont pas sur disque au démarrage de la session

40</h3>

41 

42Les plugins se chargent au démarrage de la session à partir de `installed_plugins.json` et du cache sans utiliser le réseau. Après le démarrage de la session, Claude Code vérifie les marchés déclarés en arrière-plan :

43 

44* **Un marché que les paramètres déclarent mais que `known_marketplaces.json` manque** : Claude Code le clone, puis recharge les plugins et télécharge les plugins activés qui ne sont pas en cache

45* **Un marché déclaré dont la source a changé dans les paramètres** : Claude Code le récupère à nouveau à partir de la nouvelle source et affiche `Plugins changed. Run /reload-plugins to activate.`

46 

47Un plugin activé qu'aucun chemin n'a récupéré et qui n'a pas de répertoire de cache utilisable affiche `Plugin "<name>" not cached at <path>` dans l'onglet **Errors** de `/plugin`, et `claude plugin list` ajoute `— run /plugin to refresh` à la même ligne. Pour le correctif, voir [`Plugin "<name>" not cached at <path>`](/docs/fr/plugins/troubleshooting#plugin-not-cached-at).

48 

49<h2 id="find-where-a-plugin-came-from">

50 Trouver d'où vient un plugin

51</h2>

52 

53Chaque plugin a un id de la forme `<name>@<origin>`, ce que vous voyez dans les fichiers de paramètres et dans `claude plugin list --json`. La partie après `@` vous dit où Claude Code a trouvé le plugin :

54 

55| L'ID se termine par | Comment le plugin est arrivé là | Comment vous l'activez ou le désactivez |

56| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

57| `@<marketplace>` | Vous l'avez installé à partir d'un marché que vous avez ajouté | `"<name>@<marketplace>": true` ou `false` sous `enabledPlugins` dans un fichier de paramètres |

58| `@inline` | Vous avez démarré Claude Code avec `--plugin-dir` ou `--plugin-url`, défini [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/fr/env-vars#variables), ou une application Agent SDK a passé l'option `plugins`. Il se charge pour cette session uniquement | Activé pour la session sauf si le manifeste définit `defaultEnabled: false` ou un fichier de paramètres définit `"<name>@inline": false` |

59| `@skills-dir` | Vous avez enregistré un répertoire de plugin qui a un `.claude-plugin/plugin.json` sous `~/.claude/skills/` ou le `.claude/skills/` du projet | Le `defaultEnabled` du manifeste, sauf si un fichier de paramètres définit `"<name>@skills-dir"` à `true` ou `false` |

60| `@synced` | Vous ou votre organisation l'avez activé pour votre compte claude.ai, et Claude Code l'a [téléchargé](#synced-plugins) | Activé sauf si le manifeste définit `defaultEnabled: false` ou un fichier de paramètres définit `"<name>@synced": false`. Un plugin que votre organisation marque comme requis se charge indépendamment |

61 

62Pour un plugin de marché, `<name>` est le nom d'entrée dans `marketplace.json` ; pour `@inline` et `@skills-dir` c'est le `name` dans le manifeste du plugin.

63 

64Les noms d'origine dans ce tableau sont réservés, donc aucun marché ne peut être nommé `inline`, `skills-dir`, ou `synced`.

65 

66<h3 id="entry-name-and-manifest-name">

67 Nom d'entrée et nom de manifeste

68</h3>

69 

70Un plugin de marché a deux noms, et ils peuvent différer :

71 

72* **Le nom d'entrée dans `marketplace.json`** : la clé d'installation et d'activation. C'est ce que vous écrivez dans `enabledPlugins`, ce que le répertoire de cache est nommé d'après, et ce que `claude plugin list` affiche

73* **Le `name` dans le manifeste** : ce sous lequel les composants du plugin sont espacés de noms, et ce que [les conflits de noms](#name-conflicts) comparent

74 

75<h3 id="plugins-shared-through-a-repository">

76 Plugins partagés via un référentiel

77</h3>

78 

79Pour partager un plugin via un référentiel, listez-le sous `enabledPlugins` dans `.claude/settings.json` ou placez-le sous `.claude/skills/`. Claude Code ne scanne pas le répertoire `.claude/plugins/` d'un projet.

80 

81Une session cloud n'ajoute pas les marchés qu'un référentiel liste sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces), car cela nécessite la boîte de dialogue de confiance de l'espace de travail, qu'une session cloud ne montre jamais.

82 

83Un plugin de répertoire de compétences de portée de projet se charge uniquement à partir du `.claude/skills/` du [répertoire de travail principal](/docs/fr/permissions#working-directories) de la session, et seulement après que vous acceptiez la [boîte de dialogue de confiance de l'espace de travail](/docs/fr/permissions#what-runs-before-you-trust-a-folder) pour ce dossier. Il ne [recherche pas les répertoires parents jusqu'à la racine du référentiel](/docs/fr/skills#discovery-from-parent-and-nested-directories) comme le font les compétences et commandes ordinaires. Si vous lancez à partir d'un sous-répertoire, un plugin à la racine du référentiel ne se charge pas. Lancez plutôt à partir de la racine du référentiel, ou [déplacez la session là avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur.

84 

85Un plugin de portée de projet est archivé dans le référentiel et atteint chaque collaborateur qui le clone. Parce que ce contenu provient du référentiel plutôt que de vous, il se charge seulement après la même vérification de confiance qui s'applique aux règles d'autorisation de projet dans `.claude/settings.json`. Faire confiance à un dossier parent ou exécuter avec `-p` ne suffit pas. Les composants qui exécutent du code sont restreints davantage :

86 

87* Les serveurs MCP qu'il déclare passent par l'[approbation par serveur](/docs/fr/mcp) identique qu'un `.mcp.json` de projet

88* Les serveurs MCP qu'il déclare comme un [bundle MCP](/docs/fr/plugins/manifest-reference#mcpservers), un fichier `.mcpb` ou `.dxt`, ou à partir d'un fichier en dehors du répertoire du plugin sont ignorés. Déclarez-les en ligne ou dans un `.mcp.json` à l'intérieur du répertoire du plugin

89* [Les moniteurs en arrière-plan](/docs/fr/plugins/components#monitors) ne se chargent pas

90 

91Les plugins de portée personnelle n'ont aucune de ces restrictions.

92 

93Pour savoir comment écrire des plugins `--plugin-dir` et de répertoire de compétences, voir [Créer des plugins](/docs/fr/plugins/create).

94 

95<h3 id="synced-plugins">

96 Plugins synchronisés à partir de claude.ai

97</h3>

98 

99Un plugin que vous activez pour votre compte claude.ai se charge aussi dans Claude Code, aux côtés des plugins que vous installez à partir de marchés. Cela inclut les plugins que votre organisation active pour ses membres. Chacun de ces plugins se charge comme `<name>@synced`, sans marché et sans [enregistrement d'installation](#check-which-stage-a-plugin-reached).

100 

101Dans les sessions de terminal, les compétences, agents, hooks, serveurs MCP et serveurs LSP d'un plugin synchronisé se chargent tous, avec la même confiance qu'un plugin de marché que vous avez installé.

102 

103Pour les composants que Cowork charge, voir [Plugins sur claude.ai et dans Cowork](https://claude.com/docs/plugins/overview) sur claude.com.

104 

105Les plugins synchronisés se chargent dans les sessions Cowork et dans les sessions de terminal où vous vous connectez avec votre compte claude.ai :

106 

107* **[Cowork](https://claude.com/product/cowork)** : Claude Code les télécharge dans l'environnement propre de la session au démarrage de la session

108* **Sessions de terminal** : chaque fois que vous démarrez Claude Code, il se synchronise une fois en arrière-plan, téléchargeant les plugins nouveaux et mis à jour et supprimant ceux que vous ou votre organisation avez désactivés. La synchronisation dans les sessions de terminal nécessite Claude Code v2.1.273 ou ultérieur

109 

110<h4 id="sync-timing-in-terminal-sessions">

111 Timing de synchronisation dans les sessions de terminal

112</h4>

113 

114Parce que la synchronisation de terminal s'exécute en arrière-plan, elle peut se terminer après le démarrage de votre session. Quand elle ajoute, met à jour ou supprime un plugin synchronisé dans une session interactive, vous voyez `Plugins changed. Run /reload-plugins to activate.` Exécutez `/reload-plugins` pour charger la modification dans cette session, ou laissez-la pour la prochaine fois que vous démarrez Claude Code.

115 

116Si vous activez un plugin sur claude.ai pendant qu'une session s'exécute, le plugin télécharge la prochaine fois que vous démarrez Claude Code.

117 

118<h4 id="sign-in-requirements-for-terminal-sync">

119 Exigences de connexion pour la synchronisation de terminal

120</h4>

121 

122Dans votre terminal, les plugins se synchronisent uniquement dans les sessions où vous vous connectez avec votre compte claude.ai.

123 

124Si vous vous êtes connecté sur une version antérieure de Claude Code, cette connexion ne couvre pas les plugins jusqu'à ce que Claude Code la renouvelle en arrière-plan. Pour accéder plus tôt, exécutez `/login` à nouveau. La synchronisation des plugins commence alors la prochaine fois que vous démarrez Claude Code.

125 

126<h4 id="control-which-synced-plugins-load">

127 Contrôler quels plugins synchronisés se chargent

128</h4>

129 

130Vous pouvez désactiver les plugins synchronisés un par un, sauf un plugin que votre organisation exige, ou désactiver tous les plugins synchronisés sur la machine :

131 

132* **Un plugin** : `claude plugin disable <name>@synced` dans votre shell et l'onglet **Installed** de `/plugin` dans une session enregistrent tous les deux `"<name>@synced": false` dans votre [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins) au niveau utilisateur. Pour garder le plugin hors d'un projet dans chaque environnement, définissez la même clé dans le `.claude/settings.json` engagé du projet

133* **Tous les plugins synchronisés sur une machine** : définissez [`syncClaudeAiPlugins`](/docs/fr/settings-reference#syncclaudeaiplugins) à `false` dans vos paramètres utilisateur, ou votre organisation le définit dans [les paramètres gérés](/docs/fr/managed-settings). Claude Code arrête de télécharger, et la prochaine fois que vous le démarrez, il déplace les plugins qu'il a déjà synchronisés vers `~/.claude/plugins/.trash/` et ne les charge plus. Si votre organisation désactive les Compétences sur claude.ai, les plugins arrêtent aussi de se synchroniser

134* **Un plugin que votre organisation exige** : un plugin que votre organisation marque comme requis sur claude.ai se charge même si vous l'avez désactivé plus tôt. `claude plugin disable` le refuse avec `Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.`, et `claude plugin list` le marque `required by your org`

135 

136Pour supprimer un plugin sur claude.ai, voir [Gérer les plugins installés](/docs/fr/plugins/install#manage-installed-plugins).

137 

138<h2 id="find-where-a-plugin-is-enabled">

139 Trouver où un plugin est activé

140</h2>

141 

142Vous pouvez définir une entrée `enabledPlugins` dans l'une de six sources. Le tableau les liste de la plus basse à la plus haute précédence, et qui chacune s'applique. Pour les fichiers de paramètres eux-mêmes, voir [Fichiers de paramètres et qui ils affectent](/docs/fr/settings#where-settings-live).

143 

144| Source | Où vous la définissez | Atteint |

145| :---------- | :----------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ |

146| `--add-dir` | `.claude/settings.json` ou `.claude/settings.local.json` dans un répertoire que vous passez avec `--add-dir` | Cette session uniquement. Seule une valeur `true` a un effet, et chaque autre source la remplace |

147| `user` | `~/.claude/settings.json` | Vous, dans chaque projet |

148| `project` | `.claude/settings.json` | Tous ceux qui clonent le référentiel |

149| `local` | `.claude/settings.local.json` | Vous, dans ce référentiel uniquement |

150| `flag` | La valeur `--settings` que vous passez au lancement | Cette session uniquement |

151| `managed` | [Paramètres gérés](/docs/fr/managed-settings) | Chaque utilisateur que la politique couvre. `true` force-active et `false` bloque, et aucune autre source ne les remplace |

152 

153Ces sources fusionnent clé par clé. Pour chaque id de plugin, la valeur qui s'applique est celle de la source de plus haute précédence qui mentionne l'id. Une source qui ne mentionne pas l'id laisse la valeur de la source de plus basse précédence en effet.

154 

155<h3 id="disabled-in-user-settings-but-still-loads">

156 Désactivé dans les paramètres utilisateur mais se charge toujours

157</h3>

158 

159Si vous définissez un plugin à `false` dans `~/.claude/settings.json` et qu'il se charge toujours, un `true` dans une source de plus haute précédence le remplace. La ligne du plugin dans `claude plugin list` et dans `/plugin` affiche `Disabled in ~/.claude/settings.json but still loads — project settings enable it, which overrides your user setting`. Le message nomme la source qui vous a remplacé : `project`, `project, gitignored` pour `.claude/settings.local.json`, `cli flag`, ou `managed`.

160 

161Pour refuser un plugin activé par le projet sur votre machine, définissez l'id à `false` dans `.claude/settings.local.json`, qui a une plus haute précédence que le fichier de projet.

162 

163<h3 id="enabled-in-project-settings-but-not-installed">

164 Activé dans les paramètres de projet mais non installé

165</h3>

166 

167Quand le seul `true` d'un plugin est dans le `.claude/settings.json` du projet, Claude Code ne le récupère pas sur une machine où il n'est pas installé, sauf si son entrée de marché a une [source de chemin relatif](/docs/fr/plugins/marketplace-reference#plugin-sources) ou un [répertoire de semence](/docs/fr/plugins/org#seed-containers-and-ci) le contient déjà. À la place, l'onglet **Errors** de `/plugin` affiche `Plugin "<name>" is enabled in project settings but isn't installed here`.

168 

169Un plugin de chemin relatif n'a besoin d'aucun enregistrement d'installation car il se charge à partir du marché lui-même.

170 

171Claude Code récupère un plugin avec une source externe uniquement quand l'une de ces sources le définit à `true` :

172 

173* Vos paramètres utilisateur

174* Un `.claude/settings.local.json` que git ne suit pas

175* L'indicateur `--settings`

176* Paramètres gérés

177 

178<h2 id="find-plugins-on-disk">

179 Trouver les plugins sur disque

180</h2>

181 

182Claude Code garde les fichiers de plugin et les enregistrements d'état sous une racine de plugins, qui est `~/.claude/plugins` sauf si vous définissez [`CLAUDE_CODE_PLUGIN_CACHE_DIR`](/docs/fr/env-vars). Chaque chemin du tableau est relatif à cette racine.

183 

184| Chemin | Ce qu'il contient |

185| :---------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

186| `cache/<marketplace>/<plugin>/<version>/` | Un répertoire par version installée d'un plugin de marché. `<plugin>` est le nom d'entrée du marché et `<version>` est la [version résolue](#versions-and-updates). `${CLAUDE_PLUGIN_ROOT}` pointe vers ce répertoire |

187| `data/<plugin-id>/` | Le répertoire persistant du plugin, exposé comme `${CLAUDE_PLUGIN_DATA}`. Pour savoir comment `<plugin-id>` est formé, voir [Variables de chemin et données persistantes](/docs/fr/plugins/components#path-variables-and-persistent-data). Claude Code le crée quand un composant de plugin l'utilise d'abord et le garde à travers les mises à jour. Claude Code le supprime quand vous désinstallez le plugin de sa dernière portée, sauf si vous passez `--keep-data` |

188| `marketplaces/<name>/` | Le clone ou le téléchargement d'un marché ajouté à partir de GitHub, d'un autre hôte Git, ou d'une URL. Un marché ajouté à partir d'une source `file` ou `directory` locale n'a pas de copie ici, et son `installLocation` dans `known_marketplaces.json` est le chemin que vous avez donné |

189| `synced/` | Les plugins que Claude Code a [synchronisés à partir de votre compte claude.ai](#synced-plugins) |

190| `.trash/` | Les plugins que la synchronisation claude.ai a supprimés, comme après que vous en ayez désactivé un sur claude.ai ou arrêté la synchronisation |

191| `installed_plugins.json` et `known_marketplaces.json` | Les enregistrements de ce que Claude Code a installé et quels marchés il a récupérés, décrits sous [Vérifier à quel stade un plugin est arrivé](#check-which-stage-a-plugin-reached). Un [marché hébergé sur claude.ai](/docs/fr/plugins/install#add-from-claude-ai) est enregistré dans `known_marketplaces_claudeai.json` à la place |

192| `flagged-plugins.json` | Les plugins que Claude Code a désinstallés parce que leur marché les a retirés de la liste. Ils apparaissent dans la section **Flagged** de `/plugin` ; voir [Héberger un marché](/docs/fr/plugins/host-marketplace) |

193 

194Parce que `${CLAUDE_PLUGIN_ROOT}` pointe vers un répertoire de version, le chemin racine d'un plugin change avec chaque version. Gardez les fichiers durables d'un plugin dans `${CLAUDE_PLUGIN_DATA}` à la place.

195 

196<h3 id="in-place-and-copied-plugins">

197 Plugins en place et copiés

198</h3>

199 

200Claude Code charge certains plugins en place d'où vous les gardez et copie le reste dans le cache, selon leur origine :

201 

202* **Plugins `--plugin-dir` et de répertoire de compétences** : le répertoire se charge en place et n'est jamais copié. Une archive `--plugin-url` ou un `.zip` `--plugin-dir` est d'abord extrait dans un répertoire temporaire de session

203* **Plugins de chemin relatif dans un marché que vous avez ajouté à partir d'un répertoire local** : le plugin se charge en place à partir de son chemin à l'intérieur du dossier du marché. Vos modifications du répertoire source prennent effet au prochain démarrage de session ou `/reload-plugins`, et vous n'avez pas besoin d'augmenter la version. Les processus de hook du plugin et les serveurs MCP et LSP reçoivent un `CLAUDE_PLUGIN_ROOT` qui pointe vers le répertoire source. Pour ses dépendances de package Node.js, voir [Quand l'installation de dépendance s'exécute](#when-the-dependency-install-runs)

204* **Plugins de source `command` en [mode lien](/docs/fr/plugins/marketplace-reference#command-plugin-source)** : le répertoire que la commande a imprimé se charge en place, via des liens dans l'entrée de cache

205* **Tous les autres plugins de marché** : Claude Code copie le plugin dans `cache/<marketplace>/<plugin>/<version>/` à l'installation et charge cette copie. Les fichiers en dehors du répertoire du plugin ne sont pas copiés, donc quand un script à l'intérieur d'un plugin copié lit un chemin au-dessus de la racine du plugin, comme `../shared`, il ne les trouve pas

206 

207<h3 id="paths-that-escape-the-plugin-directory">

208 Chemins qui s'échappent du répertoire du plugin

209</h3>

210 

211Qu'un plugin se charge en place ou à partir d'une copie en cache, Claude Code ne le laisse pas déclarer des composants en dehors de son propre répertoire. Il rejette un chemin de composant qui se résout en dehors de la racine du plugin, que le chemin soit déclaré dans `plugin.json` ou dans une entrée de marché :

212 

213* **Un chemin qui pointe en dehors du plugin tel qu'écrit**, comme `../shared-utils`

214* **Un lien symbolique qui mène en dehors du plugin**, autre que [les liens entre plugins dans un marché](/docs/fr/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)

215* **Sur macOS et Linux, un chemin qui contient une barre oblique inverse n'importe où dedans**, même quand le chemin reste à l'intérieur du plugin. Les composants déclarés avec des chemins de barre oblique inverse se chargent donc sur Windows uniquement, donc écrivez les chemins de composant avec des barres obliques avant, comme `./commands/deploy.md`

216 

217Un chemin rejeté apparaît comme une erreur [`path escapes plugin directory`](/docs/fr/errors#path-escapes-plugin-directory), et le plugin se charge sans ce composant.

218 

219<h3 id="cleanup-of-previous-versions">

220 Nettoyage des versions précédentes

221</h3>

222 

223Quand vous mettez à jour ou désinstallez un plugin, Claude Code écrit un marqueur `.orphaned_at` dans le répertoire de version précédente. Il supprime ce répertoire dans un nettoyage en arrière-plan 14 jours plus tard, donc une session qui a déjà chargé l'ancienne version continue de s'exécuter.

224 

225Le balayage s'exécute uniquement tant que `installed_plugins.json` enregistre au moins une installation. Après que vous ayez désinstallé votre dernier plugin, les répertoires orphelins restent jusqu'à ce que vous en installiez un autre.

226 

227<h3 id="node-js-package-dependencies">

228 Dépendances de package Node.js

229</h3>

230 

231Quand Claude Code copie un plugin dans le cache, il installe aussi les dépendances de package Node.js du plugin là, donc les hooks et serveurs MCP du plugin peuvent les charger.

232 

233Cette section couvre les packages npm et Bun qu'un plugin déclare dans son propre `package.json`. Pour les plugins qui dépendent d'autres plugins, voir [versions de dépendance de plugin](/docs/fr/plugins/dependencies).

234 

235<h4 id="when-the-dependency-install-runs">

236 Quand l'installation de dépendance s'exécute

237</h4>

238 

239Claude Code exécute l'installation à l'intérieur du répertoire de version copié chaque fois qu'il en crée un :

240 

241* Quand vous installez un plugin

242* Quand Claude Code met à jour un plugin vers une nouvelle version

243* Au démarrage de la session quand un plugin activé n'est pas en cache, comme sur une nouvelle machine

244 

245Pour un plugin de chemin relatif [chargé en place](#in-place-and-copied-plugins) à partir d'un marché de répertoire local, Claude Code n'installe pas les dépendances dans le répertoire source. Installez-les là vous-même, ou à partir d'un hook dans [`${CLAUDE_PLUGIN_DATA}`](/docs/fr/plugins/components#path-variables-and-persistent-data).

246 

247L'installation s'exécute uniquement quand le répertoire racine du plugin contient à la fois un `package.json` et un fichier de verrouillage pris en charge. Le fichier de verrouillage décide quelle commande Claude Code exécute :

248 

249| Fichier de verrouillage | Commande |

250| :------------------------------------------- | :----------------------------------------------- |

251| `bun.lock` ou `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |

252| `npm-shrinkwrap.json` ou `package-lock.json` | `npm ci --ignore-scripts` |

253 

254Si un plugin contient plus d'un de ces fichiers de verrouillage, Claude Code utilise la première correspondance, en vérifiant dans l'ordre : `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.

255 

256Claude Code ignore l'installation pour les fichiers de verrouillage Yarn et pnpm et pour un `bunfig.toml` à côté du fichier de verrouillage Bun :

257 

258* Si votre plugin n'a qu'un `yarn.lock` ou `pnpm-lock.yaml`, remplacez-le par un fichier de verrouillage npm

259* Si un `bunfig.toml` est dans le même répertoire que le fichier de verrouillage Bun, supprimez le `bunfig.toml`, ou remplacez le fichier de verrouillage Bun par un fichier de verrouillage npm

260 

261Incluez un fichier de verrouillage npm pour atteindre le plus d'utilisateurs. Claude Code exécute le gestionnaire de packages du fichier de verrouillage correspondant à partir du PATH de l'utilisateur et n'essaie pas l'autre fichier de verrouillage à la place si ce gestionnaire de packages manque.

262 

263Pour un plugin distribué via une source npm, utilisez `npm-shrinkwrap.json`, car npm exclut `package-lock.json` des packages publiés.

264 

265<h4 id="limits-on-the-dependency-install">

266 Limites sur l'installation de dépendance

267</h4>

268 

269Claude Code contraint cette installation de dépendance de sorte qu'aucun code du plugin ou de ses packages ne s'exécute pendant celle-ci, et limite combien de temps elle peut s'exécuter :

270 

271* **Résolution gelée** : Bun et npm installent exactement ce que le fichier de verrouillage épingle, et échouent plutôt que de re-résoudre les versions quand `package.json` et le fichier de verrouillage ne sont pas d'accord

272* **Pas de scripts de cycle de vie** : `--ignore-scripts` empêche les scripts `preinstall`, `install`, et `postinstall` de s'exécuter, donc les dépendances qui construisent des modules natifs dans ces scripts téléchargent mais ne compilent pas pendant cette installation

273* **Délai d'expiration de 60 secondes** : Claude Code arrête une installation qui s'exécute plus longtemps et la traite comme échouée

274 

275Claude Code récupère un plugin de source npm avant cette installation de dépendance, et aucun des scripts d'installation propres du package ne s'exécute pendant la récupération. Voir [source de plugin npm](/docs/fr/plugins/marketplace-reference#npm-plugin-source).

276 

277Vous ne pouvez pas désactiver l'installation automatique. Aucun paramètre ou variable d'environnement ne la désactive.

278 

279Dans les réseaux restreints, voir les [exigences d'accès réseau](/docs/fr/network-config#network-access-requirements) pour les hôtes à autoriser.

280 

281<h4 id="when-the-dependency-install-fails-or-is-skipped">

282 Quand l'installation de dépendance échoue ou est ignorée

283</h4>

284 

285Une installation échouée ou ignorée ne bloque jamais le plugin, et chaque cas laisse un signe différent :

286 

287* Une installation échouée, ou une ignorée à cause d'un fichier de verrouillage Yarn ou pnpm ou un `bunfig.toml`, apparaît comme un avertissement dans la sortie `claude --debug`

288* Un plugin avec un `package.json` et aucun fichier de verrouillage est ignoré sans entrée de journal

289* Une installation expirée peut laisser un arbre `node_modules` partiel dans la copie en cache

290 

291Quand l'installation automatique ne peut pas fournir une dépendance, installez-la à partir d'un hook dans le [répertoire de données persistantes](/docs/fr/plugins/components#path-variables-and-persistent-data). Cela inclut les packages qui ont besoin de leurs scripts de cycle de vie pour construire, les dépendances Python, et les plugins verrouillés avec Yarn ou pnpm.

292 

293<h2 id="versions-and-updates">

294 Versions et mises à jour

295</h2>

296 

297Si l'auteur d'un plugin a poussé de nouveaux commits et `claude plugin update` affiche `<name> is already at the latest version (<version>).`, la version que Claude Code calcule pour le plugin est inchangée, donc rien ne change sur disque.

298 

299Claude Code calcule une version pour chaque plugin qu'il installe, et c'est comment il détecte une mise à jour. `claude plugin update` et la mise à jour automatique en arrière-plan calculent la version à nouveau et ignorent le plugin quand elle correspond à ce que `installed_plugins.json` enregistre.

300 

301La version nomme aussi le répertoire de cache du plugin.

302 

303Un manifeste qui épingle `"version"` est une façon que la version calculée reste la même à travers les commits. Voir [Comment Claude Code calcule la version](#how-claude-code-computes-the-version) pour l'ordre de résolution.

304 

305Un plugin [chargé en place](#in-place-and-copied-plugins) à partir d'un marché de répertoire local charge ses fichiers source actuels à chaque démarrage de session, quoi que sa chaîne de version dise. Pour un plugin à partir d'un [marché hébergé sur claude.ai](/docs/fr/plugins/install#add-from-claude-ai), la version que claude.ai enregistre pour le plugin est sa version, et le `version` du manifeste n'est pas lu.

306 

307<h3 id="how-claude-code-computes-the-version">

308 Comment Claude Code calcule la version

309</h3>

310 

311Pour un marché que vous avez ajouté par source, Claude Code choisit la règle par le type `source` de l'entrée de marché du plugin. La [référence de marché](/docs/fr/plugins/marketplace-reference#plugin-sources) liste les types de source. Pour chaque type de source dans cette liste sauf `command` :

312 

3131. Le champ `version` dans le manifeste du plugin vient d'abord

3142. Puis le champ `version` dans l'entrée de marché du plugin

3153. Quand aucun n'est défini, la version vient du type de source :

316 

317| Type de source | Version quand aucun champ `version` n'est défini |

318| :---------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |

319| `github`, `url`, ou `git-subdir` | Le SHA du commit de la source, raccourci à 12 caractères. Une version `git-subdir` porte aussi un hash du chemin du sous-répertoire |

320| `archive` | Le digest SHA-256, raccourci à 12 caractères : l'épingle `sha256` dans l'entrée de marché, ou le digest du fichier téléchargé quand il n'y a pas d'épingle |

321| Chemin relatif à l'intérieur d'un marché hébergé sur Git | Le SHA du commit du répertoire installé |

322| Répertoire local, quand ni le répertoire du plugin ni son marché n'est un référentiel git | `unknown` |

323| `npm` | `unknown` |

324 

325Claude Code ne prend pas la version à partir d'un référentiel qui enferme le chemin d'installation, comme un `~/.claude` géré par git.

326 

327Pour une source `command`, Claude Code dérive toujours la version à partir de ce que la commande a produit : un hash de 12 caractères seul, ou `<manifest version>-<hash>` quand le manifeste en définit un. Le `version` de l'entrée de marché est ignoré pour les sources de commande. Pour ce que le hash couvre, voir [Mode copie et mode lien](/docs/fr/plugins/marketplace-reference#copy-mode-and-link-mode).

328 

329Parce que le manifeste vient d'abord, un manifeste qui épingle `"version": "1.0.0"` garde chaque utilisateur sur la copie en cache jusqu'à ce que son auteur change la chaîne, cependant de nombreux commits ils poussent. Pour laisser les utilisateurs suivre les commits à la place, laissez `version` hors du manifeste et de l'entrée. [Héberger un marché](/docs/fr/plugins/host-marketplace) couvre quel choix convient à quel setup de version.

330 

331<h3 id="when-claude-code-refreshes-a-marketplace-before-an-install">

332 Quand Claude Code actualise un marché avant une installation

333</h3>

334 

335Quand vous installez un plugin, Claude Code le cherche dans sa copie locale du catalogue de marché. Vous pouvez exécuter `/plugin install` dans une session ou `claude plugin install` dans votre shell, et nommer le plugin avec ou sans son marché. Le tableau montre laquelle de ces combinaisons actualise la copie locale.

336 

337| Nom du plugin | Commande | Ce que Claude Code actualise |

338| :----------------- | :------------------------------------------- | :---------------------------------------------------------------------------------------------------- |

339| `name@marketplace` | `/plugin install` ou `claude plugin install` | Le marché nommé, avant la recherche |

340| `name` seul | `/plugin install` | Uniquement les marchés qui ont l'auto-mise à jour activée, et seulement après que la recherche échoue |

341| `name` seul | `claude plugin install` | Rien. Il lit les catalogues en cache sans actualiser |

342 

343L'actualisation avant une installation `name@marketplace` ne dépend pas du paramètre d'auto-mise à jour du marché ou de `DISABLE_AUTOUPDATER`.

344 

345Quand l'actualisation échoue, l'installation procède à partir du catalogue en cache et `claude plugin install` rapporte `marketplace not refreshed`.

346 

347Claude Code ignore l'actualisation avant une installation `name@marketplace` quand :

348 

349* Le marché a été ajouté à partir d'une source `file` ou `directory` locale, ou est défini en ligne dans les paramètres avec une [source `settings`](/docs/fr/settings-reference#extraknownmarketplaces)

350* Un [répertoire de semence](/docs/fr/env-vars) fournit le marché

351* Claude Code a actualisé le marché dans les 30 dernières secondes

352* Vous avez défini `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

353* [Les paramètres gérés](/docs/fr/plugins/org#restrict-what-users-can-install) bloquent le marché, auquel cas Claude Code refuse aussi l'installation

354 

355<h3 id="when-auto-update-runs">

356 Quand l'auto-mise à jour s'exécute

357</h3>

358 

359Dans une session interactive, après que vous ayez envoyé votre premier message, Claude Code attend un délai aléatoire jusqu'à dix minutes. Il actualise ensuite chaque marché avec l'auto-mise à jour activée et met à jour les plugins installés à partir d'eux sur disque.

360 

361La session en cours garde les versions qu'elle a chargées, et vous voyez `Plugin updated: <name> · Run /reload-plugins to apply`. Que vous rechargiez ou non, les nouvelles versions se chargent au prochain lancement.

362 

363<h4 id="which-marketplaces-and-plugins-auto-update">

364 Quels marchés et plugins se mettent à jour automatiquement

365</h4>

366 

367Qu'un marché se mette à jour automatiquement suit le premier de ceux-ci qui est défini :

368 

3691. **`autoUpdate` sur son entrée `extraKnownMarketplaces`** dans un fichier de paramètres

3702. **`autoUpdate` sur son entrée `known_marketplaces.json`**, que le bouton bascule **Enable auto-update** sous `/plugin` **Marketplaces** écrit. Quand un fichier de paramètres déclare aussi le marché sous `extraKnownMarketplaces`, le bouton bascule écrit `autoUpdate` à cette entrée de paramètres aussi

3713. **La valeur par défaut** : activée pour les marchés officiels d'Anthropic comme `claude-plugins-official`, désactivée pour `knowledge-work-plugins` et `first-party-plugins`, activée pour [les marchés ajoutés à partir de claude.ai](/docs/fr/plugins/install#add-from-claude-ai), et désactivée pour tous les autres marchés

372 

373Si vous définissez `DISABLE_UPDATES=1`, `DISABLE_AUTOUPDATER=1`, ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`, le passage entier est désactivé et le bouton bascule **Enable auto-update** est caché, sauf si vous définissez aussi `FORCE_AUTOUPDATE_PLUGINS=1`. La [référence des variables d'environnement](/docs/fr/env-vars) couvre l'effet plus large de chaque variable.

374 

375L'auto-mise à jour ignore aussi un plugin dont l'entrée de marché déclare un `headersHelper`. [Les installations et mises à jour qui refusent une commande au lieu de demander](/docs/fr/plugins/host-marketplace#installs-and-updates-that-refuse-the-command-instead-of-asking) expliquent quand un tel plugin apparaît dans l'onglet **Errors** de `/plugin` et comment vous le mettez à jour à partir de là.

376 

377Quand un plugin copié se met à jour en milieu de session, les commandes de hook, les moniteurs, les serveurs MCP et les serveurs LSP continuent d'utiliser le chemin de la version précédente. Exécutez `/reload-plugins` pour basculer les hooks, les serveurs MCP et les serveurs LSP vers le nouveau chemin. Les moniteurs nécessitent un redémarrage de session.

378 

379<h3 id="when-a-command-source-re-runs">

380 Quand une source de commande se réexécute

381</h3>

382 

383Les plugins avec une source `command` n'attendent pas le [passage d'auto-mise à jour](#when-auto-update-runs). Le répertoire imprimé reflète l'état de l'outil au moment où la commande s'est exécutée, donc Claude Code exécute la [commande que vous avez acceptée](/docs/fr/plugins/host-marketplace#change-the-command-of-a-command-source) à nouveau à ces moments :

384 

385* Chaque fois que vous installez ou mettez à jour le plugin

386* Une fois par session pour chaque plugin activé de source de commande, en arrière-plan, peu après le démarrage de la session. Cette exécution ne dépend pas du paramètre d'auto-mise à jour du marché ou de `DISABLE_AUTOUPDATER`

387* Au démarrage ou sur `/reload-plugins`, quand la version installée d'un plugin activé manque du cache de plugin

388 

389Claude Code ignore les deux exécutions en arrière-plan quand vous définissez [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/fr/env-vars). Les installations et mises à jour explicites exécutent toujours la commande avec cette variable définie.

390 

391Quand la sortie hachée de la commande a changé, Claude Code installe le résultat comme une nouvelle version et la recharge dans la session interactive en cours, basculant [les mêmes composants que `/reload-plugins` bascule](/docs/fr/plugins/cli-reference#reload-plugins). Vous voyez une notification que le plugin a été rechargé.

392 

393Si recharger en place invaliderait le cache d'invite de la session, Claude Code vous invite plutôt à exécuter `/reload-plugins`, qui [avertit du coût du cache et s'applique quand réexécuté avec `--force`](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin).

394 

395<h2 id="name-conflicts">

396 Conflits de noms

397</h2>

398 

399Quand les plugins activés de différentes origines partagent un nom de manifeste, cet ordre décide lequel se charge, de la plus haute à la plus basse précédence :

400 

4011. Un plugin dont l'id apparaît dans les paramètres gérés `enabledPlugins`, comme `true` ou `false`. Une copie `--plugin-dir` dont le nom de manifeste correspond à la partie nom de l'id n'est pas chargée, et vous voyez `--plugin-dir copy of "<name>" ignored: plugin is locked by managed settings`

4022. Un plugin `--plugin-dir`, `--plugin-url`, ou `CLAUDE_CODE_PLUGIN_DIRS` activé. Il remplace un plugin de marché installé ou de répertoire de compétences du même nom :

403 * **Un plugin de marché installé** : remplacé silencieusement. `claude plugin list` affiche toujours la ligne du marché comme activée, car cette ligne reflète vos paramètres. Seul le journal que Claude Code écrit sous `~/.claude/debug/` quand vous démarrez avec `--debug` enregistre `Plugin "<name>" from --plugin-dir overrides installed version`

404 * **Un plugin de répertoire de compétences** : remplacé par une ligne d'onglet **Errors** de `/plugin` qui lit `Not loaded — the name "<name>" is already taken by a session-only plugin (--plugin-dir / --plugin-url), which takes precedence`

4053. Un plugin de marché installé. Un plugin de répertoire de compétences du même nom obtient la même ligne `Not loaded`, nommant le plugin installé

4064. Un plugin de répertoire de compétences. Entre deux de ceux-ci, la copie sous `~/.claude/skills/` se charge et la copie `.claude/skills/` du projet est supprimée, avec une ligne qui dit quel chemin l'a masquée

4075. Un plugin [synchronisé à partir de claude.ai](#synced-plugins). Quand un plugin activé de toute autre origine correspond à son nom, Claude Code charge ce plugin et rapporte la copie synchronisée comme non chargée. Pour utiliser la copie claude.ai à la place, désactivez votre propre copie

408 

409Parce que l'ordre compare les noms de manifeste, un plugin `--plugin-dir` nommé `hello-plugin` remplace `hello@example-marketplace` quand ce plugin's manifeste dit aussi `"name": "hello-plugin"`.

410 

411<h3 id="keep-a-session-only-plugin-from-loading">

412 Empêcher un plugin de session uniquement de se charger

413</h3>

414 

415Pour empêcher un plugin `--plugin-dir` de masquer quoi que ce soit, ou pour en désactiver un quand un processus parent passe l'indicateur pour vous, définissez son id à `false` dans n'importe quel fichier de paramètres. Pour un plugin dont le nom de manifeste est `hello-plugin`, l'entrée est `"enabledPlugins": {"hello-plugin@inline": false}`. Un plugin de session uniquement désactivé ne masque pas, donc la copie de marché ou de répertoire de compétences se charge à la place.

416 

417<h2 id="next-steps">

418 Étapes suivantes

419</h2>

420 

421* [Installer et gérer les plugins](/docs/fr/plugins/install) : les étapes d'installation, d'activation, de désactivation et de mise à jour elles-mêmes

422* [Dépanner les plugins](/docs/fr/plugins/troubleshooting) : les messages d'erreur par le stade qui les produit

423* [Référence des commandes de plugin](/docs/fr/plugins/cli-reference) : les indicateurs et commandes nommés sur cette page

424* [Gérer les plugins pour votre organisation](/docs/fr/plugins/org) : les paramètres gérés qui force-activent ou bloquent les plugins

plugins/manifest-reference.md +710 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Référence du manifeste de plugin

6 

7> Référence complète pour plugin.json : chaque champ avec son type et sa valeur par défaut, les formes de chemin acceptées, et les schémas userConfig et variables d'environnement.

8 

9Un manifeste de plugin est le fichier `plugin.json` dans le répertoire `.claude-plugin/` d'un plugin. Il contient les métadonnées du plugin et les valeurs [`userConfig`](#user-configuration) que Claude Code demande à l'utilisateur. Il déclare également tout composant que vous définissez en ligne ou que vous conservez en dehors de son [emplacement par défaut](#standard-layout).

10 

11Cette référence est destinée aux créateurs de plugins et aux propriétaires de marketplace qui mettent des champs de composant dans une entrée de marketplace.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Apprendre à créer un plugin** : commencez par [Créer un plugin](/docs/fr/plugins/create)

17 * **Ce que chaque composant fait à l'exécution** : voir [Composants de plugin](/docs/fr/plugins/components)

18</Note>

19 

20Commencez par la section qui correspond à ce que vous recherchez :

21 

22* Un champ : le tableau [Champs](#fields) donne le type de chaque champ, s'il est obligatoire, sa valeur par défaut et ce qu'il accepte. [Règles de chemin](#path-rules) couvre le préfixe `./` et le confinement pour chaque chemin de composant

23* Une option `userConfig` ou une entrée `channels` : les schémas [Configuration utilisateur](#user-configuration) et [Canaux](#channels)

24* `${CLAUDE_PLUGIN_ROOT}` ou une autre variable qu'un plugin peut référencer : [Variables d'environnement](#environment-variables)

25* Où vont les fichiers de chaque composant : [Disposition standard](#standard-layout)

26* Un message de `claude plugin validate` : la [page de dépannage](/docs/fr/plugins/troubleshooting) liste chaque message avec sa correction et des liens vers les sections pertinentes de cette page

27 

28<h2 id="manifest-file">

29 Fichier manifeste

30</h2>

31 

32Le manifeste est optionnel. Sans lui, Claude Code charge les composants qu'il trouve dans la [disposition standard](#standard-layout). Le nom du plugin provient alors de l'entrée de marketplace, ou du nom du répertoire lorsque vous chargez le plugin avec `--plugin-dir`.

33 

34Écrivez un manifeste lorsque vous voulez des métadonnées, un composant en dehors de son répertoire par défaut, `userConfig`, ou une définition de composant en ligne.

35 

36Enregistrez le manifeste à `.claude-plugin/plugin.json` sous la racine du plugin. Mettez tous les autres fichiers de plugin à la racine du plugin, pas à l'intérieur de `.claude-plugin/`. Cela inclut `skills/`, `commands/`, et `hooks/`.

37 

38L'exemple suivant définit la plupart des clés du tableau [Champs](#fields). Il passe la validation dans un répertoire de plugin qui contient chaque chemin référencé.

39 

40```json theme={null}

41{

42 "name": "deploy-tools",

43 "displayName": "Deploy Tools",

44 "version": "1.2.0",

45 "description": "Deployment commands, a review agent, and a status monitor",

46 "author": {

47 "name": "Example Team",

48 "email": "dev@example.com",

49 "url": "https://example.com"

50 },

51 "homepage": "https://example.com/docs/deploy-tools",

52 "repository": "https://github.com/example/deploy-tools",

53 "license": "MIT",

54 "keywords": ["deployment", "ci"],

55 "defaultEnabled": true,

56 "dependencies": ["secrets-vault"],

57 "metadata": { "catalogId": "cat-123" },

58 "skills": ["./extra-skills/"],

59 "commands": {

60 "status": {

61 "source": "./commands/status.md",

62 "description": "Show the current deployment status"

63 },

64 "about": {

65 "content": "Explain what the deploy-tools plugin provides.",

66 "description": "Describe this plugin"

67 }

68 },

69 "agents": ["./agents/reviewer.md"],

70 "hooks": "./config/extra-hooks.json",

71 "mcpServers": {

72 "deploy-api": {

73 "command": "node",

74 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"]

75 }

76 },

77 "lspServers": "./.lsp.json",

78 "outputStyles": "./styles/",

79 "experimental": {

80 "themes": "./themes/",

81 "monitors": "./config/monitors.json"

82 },

83 "userConfig": {

84 "api_token": {

85 "type": "string",

86 "title": "API token",

87 "description": "Token for the deployment API",

88 "sensitive": true

89 }

90 }

91}

92```

93 

94<h3 id="unrecognized-fields">

95 Champs non reconnus

96</h3>

97 

98Une clé de niveau supérieur non reconnue est supprimée, et une clé non reconnue à l'intérieur d'une option `userConfig`, d'une entrée `channels`, d'une config `lspServers`, ou d'une entrée `monitors` est rejetée :

99 

100* **Champs de niveau supérieur** : le champ est supprimé et le plugin se charge. `claude plugin validate` signale chaque champ de niveau supérieur non reconnu comme un avertissement

101* **Objets stricts** : les options `userConfig`, les entrées `channels`, les configs `lspServers`, et les entrées `monitors` sont stricts. Une clé inconnue à l'intérieur de l'une d'elles est une erreur, et le plugin ne se charge pas

102 

103<h3 id="validate-the-manifest">

104 Valider le manifeste

105</h3>

106 

107`claude plugin validate` est la vérification faisant autorité pour un manifeste. Exécutez-le depuis votre shell par rapport au répertoire du plugin :

108 

109```bash theme={null}

110claude plugin validate ./my-plugin

111```

112 

113La commande signale l'un de ces résultats :

114 

115* **`Validation passed`** : le manifeste se charge

116* **`Validation passed with warnings`** : le manifeste se charge, mais le validateur a trouvé quelque chose à corriger, comme un champ de niveau supérieur inconnu que Claude Code supprime, un `name` qui n'est pas en kebab-case, ou un `version`, `description`, ou `author` manquant. Passez `--strict` pour transformer les avertissements en échecs dans CI

117* **`Validation failed`** : le manifeste a une incompatibilité de type, un chemin qui est manquant ou s'échappe de la racine du plugin, ou une clé inconnue à l'intérieur d'une option `userConfig`, d'une entrée `channels`, d'une config `lspServers`, ou d'une entrée `monitors`. Claude Code signale le même problème lorsqu'il charge le plugin

118 

119<h2 id="fields">

120 Champs

121</h2>

122 

123Le tableau liste les clés de niveau supérieur dans `plugin.json`. `name` est la seule clé obligatoire. Lorsqu'un nom de champ est un lien, la section liée a ses règles complètes.

124 

125Pour les clés de composant telles que `commands` et `hooks`, [Formes de chemin de composant](#component-path-forms) montre chaque forme acceptée avec un exemple, et chaque chemin suit les [règles de chemin](#path-rules) pour le préfixe `./`, les extensions, et le confinement.

126 

127| Champ | Type | Description |

128| :----------------------------------- | :------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

129| `$schema` | String | URL du schéma JSON pour l'autocomplétion de l'éditeur. Claude Code l'ignore au moment du chargement |

130| [`name`](#name) | String | Identifiant du plugin, obligatoire. Utilisez kebab-case. Chaque composant est espacé de noms sous celui-ci |

131| [`displayName`](#displayname) | String | Nom affiché dans l'interface utilisateur à la place de `name` |

132| [`version`](#version) | String | Chaîne de version. La définir maintient les utilisateurs sur cette version jusqu'à ce que vous la changiez |

133| `description` | String | Explication brève de ce que le plugin fournit |

134| `author` | Object | `name`, qui est obligatoire, plus `email` et `url` optionnels |

135| `homepage` | String | URL de documentation. Doit être analysée comme une URL, sinon le plugin ne se charge pas |

136| `repository` | String | URL du référentiel source. Non validée |

137| `license` | String | Identifiant SPDX tel que `MIT` ou `Apache-2.0` |

138| `keywords` | Array of strings | Balises de découverte |

139| [`metadata`](#metadata) | Object | Objet de forme libre pour vos propres données. Claude Code ne le lit pas |

140| [`defaultEnabled`](#defaultenabled) | Boolean | Si le plugin démarre activé lorsque l'utilisateur ne l'a pas défini. Par défaut `true` |

141| [`dependencies`](#dependencies) | Array of strings or objects | Plugins qui doivent être activés pour que celui-ci fonctionne |

142| [`settings`](#settings) | Object | Paramètres que Claude Code applique tandis que le plugin est activé. Seuls `agent` et `subagentStatusLine` prennent effet |

143| [`userConfig`](#user-configuration) | Object | Valeurs que Claude Code demande à l'utilisateur lorsque le plugin est activé |

144| [`channels`](#channels) | Array of objects | Canaux de message que le plugin fournit, chacun lié à l'un de ses serveurs MCP |

145| `skills` | Path, or array of paths | Répertoires à analyser pour les skills, chacun étant un répertoire de dossiers `<name>/SKILL.md` ou un dossier contenant directement `SKILL.md`. `"."` nomme la racine du plugin. S'ajoute à l'analyse par défaut `skills/` |

146| [`commands`](#commands) | Path, array of paths, or object | Fichiers de commande `.md` plats, répertoires de ceux-ci, ou une carte d'objets du nom de commande à `source` ou `content`. Remplace l'analyse par défaut `commands/` |

147| `agents` | Path, or array of paths | Fichiers d'agent `.md`. Les répertoires ne sont pas acceptés. Remplace l'analyse par défaut `agents/` |

148| [`hooks`](#hooks) | Path, object, or array of either | Fichiers hook `.json` ou config hook en ligne. Chargés ensemble avec `hooks/hooks.json` |

149| [`mcpServers`](#mcpservers) | Path, object, or array of either | Fichiers config MCP `.json`, bundles `.mcpb` ou `.dxt`, ou configs de serveur en ligne clés par nom. Chargés ensemble avec `.mcp.json` ; un nom de serveur déclaré plus tard remplace un nom antérieur |

150| [`lspServers`](#lspservers) | Path, object, or array of either | Fichiers config LSP `.json` ou configs de serveur en ligne clés par nom. Chargés ensemble avec `.lsp.json` |

151| `outputStyles` | Path, or array of paths | Fichiers de style de sortie ou répertoires. Remplace l'analyse par défaut `output-styles/` |

152| `workflows` | Path, or array of paths | Fichiers [Workflow](/docs/fr/workflows#distribute-a-workflow-in-a-plugin) `.js` ou répertoires. Remplace l'analyse par défaut `workflows/` |

153| `experimental` | Object | Conteneur pour `themes`, `monitors`, et `evals`, dont la forme de manifeste peut encore changer |

154| `experimental.themes` | Path, or array of paths | Fichiers de thème ou répertoires. Remplace l'analyse par défaut `themes/`. Une clé `themes` de niveau supérieur se charge toujours, avec un avertissement `claude plugin validate` |

155| [`experimental.monitors`](#monitors) | Path, or inline array | Un fichier `.json` contenant le tableau monitors, ou le tableau lui-même. Par défaut `monitors/monitors.json`. Une clé `monitors` de niveau supérieur se charge toujours, avec un avertissement `claude plugin validate`. Les monitors ne s'exécutent que dans les sessions interactives, et non sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry |

156| `experimental.evals` | Path, or array of paths | Répertoire qui contient les [cas d'évaluation](/docs/fr/plugin-evals#use-a-different-eval-directory) du plugin lorsqu'il n'est pas le répertoire par défaut `evals/`. `claude plugin eval --eval-dir` le remplace |

157 

158Dans la colonne Type, un chemin est une chaîne relative à la racine du plugin, comme `"./custom/commands"`.

159 

160<h3 id="name">

161 `name`

162</h3>

163 

164L'identifiant du plugin. Il doit être non vide, sans espaces, `@`, `:`, séparateurs de chemin, caractères de contrôle, ou caractères de formatage bidirectionnel ; utilisez kebab-case.

165 

166Claude Code espace de noms chaque composant sous celui-ci, donc un agent `reviewer` dans le plugin `deploy-tools` apparaît comme `deploy-tools:reviewer`.

167 

168<h3 id="displayname">

169 `displayName`

170</h3>

171 

172Le nom affiché dans l'interface utilisateur à la place de `name`. Il peut contenir des espaces et n'importe quelle casse, et il n'est pas utilisé pour l'espacement de noms ou la recherche.

173 

174Pour un plugin installé depuis le marketplace, un `displayName` sur l'[entrée de marketplace](/docs/fr/plugins/marketplace-reference#plugin-entries) prend précédence sur cette valeur.

175 

176<h3 id="version">

177 `version`

178</h3>

179 

180Une chaîne de version, non vérifiée par rapport à semver. La définir épingle le plugin à cette version jusqu'à ce que vous la changiez ; voir [Versions et mises à jour](/docs/fr/plugins/loading#versions-and-updates). Un plugin avec une [`command` source](/docs/fr/plugins/marketplace-reference), un plugin d'un [marketplace hébergé sur claude.ai](/docs/fr/plugins/install#add-from-claude-ai), et un plugin [chargé sur place](/docs/fr/plugins/loading#find-plugins-on-disk) à partir d'un marketplace ajouté en tant que répertoire local ne sont pas épinglés par ce champ.

181 

182<h3 id="metadata">

183 `metadata`

184</h3>

185 

186Un objet de forme libre pour vos propres données, comme des champs de catalogue ou de droit. Claude Code ne le lit pas. Nécessite Claude Code v2.1.222 ou ultérieur.

187 

188<h3 id="defaultenabled">

189 `defaultEnabled`

190</h3>

191 

192Si le plugin démarre activé lorsque l'utilisateur ne l'a pas défini dans [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins). Par défaut `true`. Un plugin qu'un plugin activé dépend démarre activé indépendamment. Le même champ dans l'entrée de marketplace remplace celui-ci.

193 

194Une fois qu'une entrée `enabledPlugins` d'un utilisateur est écrite, elle persiste à travers les mises à jour de plugin, donc changer `defaultEnabled` dans une version ultérieure ne change pas le paramètre pour un utilisateur existant.

195 

196<h3 id="dependencies">

197 `dependencies`

198</h3>

199 

200Plugins qui doivent être activés pour que celui-ci fonctionne. Chaque entrée est `"name"`, `"name@marketplace"`, ou `{ "name": "...", "marketplace": "...", "version": "..." }`. Les noms nus se résolvent par rapport au propre marketplace de ce plugin. Voir [contraintes de dépendance](/docs/fr/plugins/dependencies).

201 

202<h3 id="settings">

203 `settings`

204</h3>

205 

206Paramètres que Claude Code applique tandis que le plugin est activé. Seuls `agent` et `subagentStatusLine` prennent effet ; les autres clés sont supprimées au chargement. Un `settings.json` à la racine du plugin prend précédence sur cette clé. Voir [Paramètres par défaut](/docs/fr/plugins/components#default-settings).

207 

208<h2 id="component-path-forms">

209 Formes de chemin de composant

210</h2>

211 

212Chaque clé de composant accepte un chemin relatif à la racine du plugin. `hooks`, `mcpServers`, `lspServers`, et `experimental.monitors` acceptent également une configuration en ligne, `commands` accepte également une carte d'objets, et `mcpServers` accepte également des chemins de bundle MCP et des URL. Les exemples qui suivent montrent chaque forme acceptée une fois. Pour ce que chaque composant fait à l'exécution, voir [Composants de plugin](/docs/fr/plugins/components).

213 

214<h3 id="path-only-fields">

215 Champs réservés au chemin

216</h3>

217 

218`agents`, `skills`, `outputStyles`, `workflows`, et `experimental.themes` prennent un chemin ou un tableau de chemins. Les entrées `agents` doivent être des fichiers `.md`, et les entrées `skills` doivent être des répertoires. Les trois autres acceptent un répertoire ou un fichier.

219 

220```json theme={null}

221{

222 "agents": ["./custom-agents/reviewer.md", "./custom-agents/tester.md"],

223 "skills": ["./extra-skills/", "."],

224 "outputStyles": "./styles/"

225}

226```

227 

228<h3 id="commands">

229 `commands`

230</h3>

231 

232`commands` prend un chemin, un tableau de chemins, ou une carte d'objets. Un chemin nomme un fichier de commande `.md` plat ou un répertoire. Dans la carte d'objets, chaque clé devient le nom de la commande après le préfixe du plugin. Par exemple, `"about"` dans le plugin `deploy-tools` s'exécute comme `/deploy-tools:about`.

233 

234Chaque valeur définit exactement l'une de `source` ou `content`, et une entrée qui définit les deux ou aucune échoue la validation. Les autres champs de ce tableau sont optionnels :

235 

236| Champ | Type | Description |

237| :------------- | :--------------- | :---------------------------------------------------------------------------- |

238| `source` | string | Chemin vers le fichier Markdown de la commande, relatif à la racine du plugin |

239| `content` | string | Markdown en ligne pour le corps de la commande, au lieu de `source` |

240| `description` | string | Description affichée pour la commande |

241| `argumentHint` | string | Indice d'argument affiché après le nom de la commande, comme `[file]` |

242| `model` | string | Modèle par défaut pour la commande |

243| `allowedTools` | array of strings | Outils que la commande peut utiliser sans demander |

244 

245Cette carte déclare une commande à partir d'un fichier et une à partir du contenu en ligne :

246 

247```json theme={null}

248{

249 "commands": {

250 "status": { "source": "./commands/status.md", "argumentHint": "[env]" },

251 "about": { "content": "Explain what this plugin provides." }

252 }

253}

254```

255 

256<h3 id="hooks">

257 `hooks`

258</h3>

259 

260`hooks` prend un chemin de fichier `.json`, un objet hooks en ligne dans la même forme que [`hooks` dans `settings.json`](/docs/fr/hooks#configuration), ou un tableau mélangeant les deux. Pour les événements hook et les champs de gestionnaire, voir la [référence hooks](/docs/fr/hooks#hook-events).

261 

262Claude Code fusionne tout ce que vous déclarez avec `hooks/hooks.json` lorsque ce fichier existe.

263 

264```json theme={null}

265{

266 "hooks": [

267 "./config/extra-hooks.json",

268 {

269 "PostToolUse": [

270 {

271 "matcher": "Write|Edit",

272 "hooks": [

273 { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/format.sh" }

274 ]

275 }

276 ]

277 }

278 ]

279}

280```

281 

282<h3 id="mcpservers">

283 `mcpServers`

284</h3>

285 

286`mcpServers` prend un chemin de fichier `.json`, un chemin de bundle MCP ou une URL, une carte en ligne, ou un tableau mélangeant les deux. Pour les champs de config de serveur, voir [serveurs MCP fournis par plugin](/docs/fr/mcp#plugin-provided-mcp-servers).

287 

288Claude Code charge `.mcp.json` à la racine du plugin en premier, puis chaque forme déclarée dans l'ordre. Un nom de serveur déclaré plus tard remplace un nom antérieur.

289 

290Une valeur `mcpServers` prend l'une de ces formes :

291 

292| Forme | Exemple de valeur | Ce que Claude Code fait |

293| :------------------------ | :------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------- |

294| Chemin de fichier `.json` | `"./mcp/servers.json"` | Lit le fichier comme une carte `mcpServers` |

295| Chemin de bundle MCP | `"./bundle.mcpb"` | Extrait le bundle `.mcpb` ou `.dxt` dans `.mcpb-cache/` sous la racine du plugin et lit sa config de serveur |

296| URL de bundle MCP | `"https://example.com/server.mcpb"` | Télécharge le bundle dans `.mcpb-cache/`, puis le lit |

297| Carte en ligne | `{ "deploy-api": { "command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"] } }` | Utilise la carte comme configs de serveur clés par nom |

298 

299Un chemin de bundle ou une URL doit se terminer par `.mcpb` ou `.dxt`. Toute autre extension échoue la validation.

300 

301<h3 id="lspservers">

302 `lspServers`

303</h3>

304 

305`lspServers` prend un chemin de fichier `.json`, une carte en ligne du nom de serveur à la config, ou un tableau de l'un ou l'autre.

306 

307Claude Code charge `.lsp.json` à la racine du plugin en premier, puis chaque config déclarée dans l'ordre. Un nom de serveur déclaré plus tard remplace un nom antérieur.

308 

309Chaque config de serveur est un objet strict avec ces champs. Une clé inconnue échoue la validation.

310 

311| Champ | Obligatoire | Description |

312| :---------------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

313| `command` | Yes | Binaire du serveur de langage. Pas d'espaces sauf si la valeur commence par `/` ; mettez les arguments dans `args` |

314| `extensionToLanguage` | Yes | Carte de l'extension de fichier à l'ID de langage LSP, au moins une entrée. Les clés commencent par un point, comme `".go"` |

315| `args` | No | Arguments passés au serveur |

316| `transport` | No | Transport de communication : `stdio` (par défaut) ou `socket`. Claude Code accepte `socket` mais exécute chaque serveur sur stdio, donc les règles du protocole stdout s'appliquent à tous les serveurs |

317| `env` | No | Variables d'environnement pour le processus du serveur |

318| `initializationOptions` | No | Options envoyées dans la demande d'initialisation |

319| `settings` | No | Paramètres envoyés par `workspace/didChangeConfiguration` |

320| `workspaceFolder` | No | Chemin du dossier d'espace de travail pour le serveur |

321| `startupTimeout` | No | Millisecondes à attendre pour le démarrage, un entier positif |

322| `shutdownTimeout` | No | Millisecondes à attendre pour un arrêt gracieux, un entier positif. Lorsque le délai d'attente s'écoule, Claude Code termine le processus du serveur. Lorsqu'il n'est pas défini, aucun délai d'attente ne s'applique |

323| `restartOnCrash` | No | Si le serveur doit redémarrer après un crash. Par défaut `true`. Définissez à `false` pour laisser un serveur planté arrêté au lieu de le redémarrer |

324| `maxRestarts` | No | Tentatives de redémarrage avant d'abandonner, zéro ou plus |

325| `diagnostics` | No | Si les diagnostics doivent être poussés dans le contexte après les éditions. Par défaut `true` |

326 

327Cette config en ligne exécute `gopls` pour les fichiers `.go` :

328 

329```json theme={null}

330{

331 "lspServers": {

332 "go": {

333 "command": "gopls",

334 "args": ["serve"],

335 "extensionToLanguage": { ".go": "go" }

336 }

337 }

338}

339```

340 

341Pour les serveurs de langage qu'Anthropic publie en tant que plugins et comment les serveurs se comportent à l'exécution, voir [Intelligence du code](/docs/fr/plugins/code-intelligence).

342 

343<h3 id="monitors">

344 `monitors`

345</h3>

346 

347`experimental.monitors` prend un chemin de fichier `.json` ou le tableau en ligne. Lorsque vous omettez la clé, Claude Code charge `monitors/monitors.json` s'il existe.

348 

349Chaque entrée est un objet strict avec ces champs.

350 

351| Champ | Obligatoire | Description |

352| :------------ | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

353| `name` | Yes | Identifiant unique au sein du plugin |

354| `command` | Yes | Commande shell que Claude Code exécute en tant que processus d'arrière-plan persistant dans le répertoire de travail de la session |

355| `description` | Yes | Résumé court affiché dans le panneau des tâches et les résumés de notification |

356| `when` | No | Avec `"always"`, la valeur par défaut, le monitor démarre au démarrage de la session et au rechargement du plugin. Avec `"on-skill-invoke:<skill>"`, il démarre la première fois que cette skill s'exécute |

357 

358Ce tableau en ligne déclare un monitor qui démarre la première fois que la skill `deploy` s'exécute :

359 

360```json theme={null}

361{

362 "experimental": {

363 "monitors": [

364 {

365 "name": "deploy-status",

366 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/poll-deploy.sh",

367 "description": "Deployment status changes",

368 "when": "on-skill-invoke:deploy"

369 }

370 ]

371 }

372}

373```

374 

375Une commande `command` de monitor ne peut pas référencer `${user_config.*}`. Voir [Champs qui s'exécutent via un shell](#fields-that-run-through-a-shell).

376 

377<h2 id="path-rules">

378 Règles de chemin

379</h2>

380 

381Chaque chemin de composant dans un manifeste est relatif à la racine du plugin et doit commencer par `./`. Un chemin comme `commands/foo.md` échoue la validation. `skills` et `mcpServers` acceptent chacun une forme en dehors de cette règle :

382 

383* **`skills`** : accepte également `"."`. À la fois `"."` et `"./"` désignent la racine du plugin. Avant v2.1.221, `"."` échouait la validation du manifeste, donc utilisez `"./"` lorsque le plugin doit se charger sur les versions antérieures

384* **`mcpServers`** : accepte également une URL de bundle `https://`

385 

386<h3 id="containment-and-existence">

387 Confinement et existence

388</h3>

389 

390Chaque chemin de composant doit se résoudre à l'intérieur de la racine du plugin et doit exister. `claude plugin validate` ne vérifie pas les chemins `outputStyles`, `lspServers`, `monitors`, ou `themes`, donc un mauvais chemin dans ces champs échoue uniquement lorsque le plugin se charge :

391 

392* **Confinement** : un chemin qui se résout en dehors de la racine du plugin ne se charge pas, et l'onglet **Errors** `/plugin` affiche `<component> path escapes plugin directory: <path>`. Un chemin contenant `..` est le cas habituel, et `claude plugin validate` le signale comme `Path contains ".." which could be a path traversal attempt`

393* **Existence** : un chemin qui n'existe pas ne se charge pas, et l'onglet **Errors** `/plugin` affiche `<component> path not found: <path>`. `claude plugin validate` le signale comme `Path not found`

394 

395<h3 id="how-each-key-combines-with-its-default-location">

396 Comment chaque clé se combine avec son emplacement par défaut

397</h3>

398 

399Chaque clé de composant remplace son emplacement par défaut, s'y ajoute, ou le fusionne :

400 

401* **Remplace la valeur par défaut** : `commands`, `agents`, `outputStyles`, `workflows`, `experimental.themes`, `experimental.monitors`. Lorsque vous définissez `commands`, le répertoire par défaut `commands/` n'est pas analysé. Pour conserver la valeur par défaut et en ajouter d'autres, listez-la explicitement : `"commands": ["./commands/", "./extras/"]`

402* **S'ajoute à la valeur par défaut** : `skills`. Le répertoire `skills/` est toujours analysé, et les répertoires listés se chargent à côté de celui-ci

403* **Fusionne** : `hooks`, `mcpServers`, `lspServers`. Le fichier par défaut se charge en premier, et ce que le manifeste déclare fusionne avec celui-ci, comme décrit sous [Formes de chemin de composant](#component-path-forms)

404 

405Si un plugin a un dossier par défaut comme `commands/` et définit également la clé de manifeste qui le remplace, Claude Code charge les chemins du manifeste et non le dossier. `claude plugin list` et l'interface `/plugin` affichent alors l'avertissement `Default <folder>/ folder is ignored because the manifest sets "<key>"`.

406 

407Pour éviter l'avertissement, définissez la clé sur un chemin à l'intérieur de ce dossier : `"commands": ["./commands/deploy.md"]` nomme un fichier dans le dossier par défaut et ne produit aucun avertissement.

408 

409<h2 id="user-configuration">

410 Configuration utilisateur

411</h2>

412 

413`userConfig` déclare les valeurs que Claude Code demande à l'utilisateur lorsque le plugin est activé, afin que les utilisateurs ne modifient pas `settings.json` eux-mêmes.

414 

415Les clés sont des identifiants composés de lettres, de chiffres et de traits de soulignement, et ne peuvent pas commencer par un chiffre.

416 

417Chaque valeur est un objet strict avec ces champs. Une clé inconnue échoue la validation.

418 

419| Champ | Obligatoire | Description |

420| :------------ | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

421| `type` | Yes | L'un de `string`, `number`, `boolean`, `directory`, ou `file` |

422| `title` | Yes | Étiquette affichée dans la boîte de dialogue de configuration |

423| `description` | Yes | Texte d'aide affiché sous le champ |

424| `required` | No | Si `true`, la boîte de dialogue de configuration n'accepte pas une valeur vide |

425| `default` | No | Valeur utilisée lorsque l'utilisateur ne fournit rien : une chaîne, un nombre, un booléen, ou un tableau de chaînes |

426| `options` | No | Pour `string`, les valeurs que le champ accepte, affichées comme un sélecteur dans `/config`. Voir [Limiter un champ à des options fixes](#limit-a-field-to-fixed-options). Nécessite Claude Code v2.1.271 ou ultérieur |

427| `multiple` | No | Pour `string`, permet un tableau de chaînes |

428| `sensitive` | No | Si `true`, masque l'entrée et stocke la valeur dans le stockage sécurisé au lieu de `settings.json` |

429| `min` / `max` | No | Limites pour `number` |

430 

431Chaque option de chaque plugin activé apparaît également comme une ligne dans le panneau `/config`, sauf les options `sensitive` et les listes `multiple`. Les lignes `/config` nécessitent Claude Code v2.1.269 ou ultérieur.

432 

433Cette `userConfig` déclare un point de terminaison et un jeton masqué :

434 

435```json theme={null}

436{

437 "userConfig": {

438 "api_endpoint": {

439 "type": "string",

440 "title": "API endpoint",

441 "description": "Your team's API endpoint"

442 },

443 "api_token": {

444 "type": "string",

445 "title": "API token",

446 "description": "API authentication token",

447 "sensitive": true

448 }

449 }

450}

451```

452 

453<h3 id="limit-a-field-to-fixed-options">

454 Limiter un champ à des options fixes

455</h3>

456 

457Définissez `options` sur un champ `userConfig` pour que les utilisateurs choisissent sa valeur dans une liste fixe.

458 

459Pour limiter un champ `tone` à trois options, listez-les dans `options` et définissez `default` sur l'une d'elles :

460 

461```json theme={null}

462{

463 "userConfig": {

464 "tone": {

465 "type": "string",

466 "title": "Tone",

467 "description": "Voice for generated replies",

468 "options": ["neutral", "warm", "formal"],

469 "default": "neutral"

470 }

471 }

472}

473```

474 

475Si vous déclarez `options` sur n'importe quel champ, les utilisateurs sur les versions de Claude Code antérieures à v2.1.271 ne peuvent pas charger le plugin.

476 

477`options` s'applique à un champ `string` qui n'est pas `multiple` ou `sensitive`. Définissez `default` sur l'une des valeurs listées, ou définissez `required: true` afin que l'utilisateur en choisisse une. Chaque option est une étiquette simple de 1 à 64 caractères, et `claude plugin validate`, que vous exécutez dans votre shell, signale tout ce qu'il rejette. Un plugin dont `options` cassent ces règles ne se charge pas.

478 

479<h3 id="where-values-are-stored">

480 Où les valeurs sont stockées

481</h3>

482 

483Les valeurs non sensibles sont enregistrées sous [`pluginConfigs`](/docs/fr/settings-reference#pluginconfigs) dans le `settings.json` de l'utilisateur. Les valeurs sensibles vont au stockage de credentials sécurisé de la plateforme à la place. La [page des paramètres](/docs/fr/settings-reference#pluginconfigs) liste les fichiers de paramètres à partir desquels `pluginConfigs` est lu.

484 

485<h3 id="reference-a-saved-value">

486 Référencer une valeur enregistrée

487</h3>

488 

489Référencez une valeur enregistrée où le plugin en a besoin, dans l'une de ces deux formes :

490 

491* **`${user_config.KEY}`** : substitué dans la config du serveur MCP, la config du serveur LSP, les `args` du hook [exec-form](/docs/fr/hooks#exec-form-and-shell-form), et le contenu de skill et d'agent. Dans le contenu de skill et d'agent, seules les valeurs non sensibles sont substituées, et une valeur sensible là devient un placeholder

492* **`CLAUDE_PLUGIN_OPTION_<KEY>`** : exporté aux processus hook pour chaque option, avec `<KEY>` en majuscules. Un hook de forme shell lit `$CLAUDE_PLUGIN_OPTION_API_TOKEN` pour `api_token`

493 

494<h3 id="fields-that-run-through-a-shell">

495 Champs qui s'exécutent via un shell

496</h3>

497 

498Les commandes hook de forme shell, les commandes monitor, et le MCP [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication) rejettent `${user_config.*}`. Un composant qui le référence dans l'un de ces champs échoue avec une [erreur](/docs/fr/errors#plugin-command-references-user-config) au lieu de s'exécuter, car la valeur du champ est passée à un shell qui ré-analyserait la valeur substituée.

499 

500Le tableau montre comment la valeur peut atteindre chacun de ces champs à la place.

501 

502| Champ | Comment la valeur peut l'atteindre |

503| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

504| Commandes hook de forme shell | Utilisez [exec form](/docs/fr/hooks#exec-form-and-shell-form) avec `args`, ou lisez `CLAUDE_PLUGIN_OPTION_<KEY>` à partir de l'environnement du hook |

505| Commandes monitor | Pas via Claude Code. Les processus monitor ne reçoivent pas `CLAUDE_PLUGIN_OPTION_<KEY>`, donc le script monitor doit obtenir la valeur par lui-même |

506| MCP `headersHelper` | Pas via Claude Code. L'environnement du helper porte `CLAUDE_PLUGIN_ROOT`, `CLAUDE_CODE_MCP_SERVER_NAME`, et `CLAUDE_CODE_MCP_SERVER_URL` mais aucune valeur d'option, donc le script helper doit obtenir la valeur par lui-même |

507 

508<h2 id="channels">

509 Canaux

510</h2>

511 

512`channels` déclare les canaux de message qu'un plugin fournit, comme un pont vers une application de chat. Lorsque vous en déclarez un, Claude Code peut demander la configuration du canal lorsque le plugin est activé. Pour comment le serveur injecte les messages, voir la [référence des canaux](/docs/fr/channels-reference#package-as-a-plugin).

513 

514Chaque entrée est un objet strict lié à l'un des serveurs MCP du plugin, avec ces champs :

515 

516| Champ | Obligatoire | Description |

517| :------------ | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

518| `server` | Yes | Clé du serveur MCP dans le `mcpServers` de ce plugin auquel le canal se lie |

519| `displayName` | No | Nom affiché dans le titre de la boîte de dialogue de configuration. Par défaut le nom du serveur |

520| `userConfig` | No | Options à demander, dans la même forme que [top-level `userConfig`](#user-configuration). Les valeurs enregistrées se substituent dans les références `${user_config.KEY}` dans le `env` du serveur |

521 

522Ce manifeste lie un canal au serveur MCP `telegram` du plugin et demande un jeton de bot qui se substitue dans le `env` du serveur :

523 

524```json theme={null}

525{

526 "mcpServers": {

527 "telegram": {

528 "command": "node",

529 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

530 "env": { "BOT_TOKEN": "${user_config.bot_token}" }

531 }

532 },

533 "channels": [

534 {

535 "server": "telegram",

536 "displayName": "Telegram",

537 "userConfig": {

538 "bot_token": {

539 "type": "string",

540 "title": "Bot token",

541 "description": "Telegram bot token",

542 "sensitive": true

543 }

544 }

545 }

546 ]

547}

548```

549 

550<h2 id="environment-variables">

551 Variables d'environnement

552</h2>

553 

554Claude Code fournit trois variables de chemin aux composants de plugin. Référencez-les comme `${NAME}` dans les champs listés sous [Où chaque variable se résout](#where-each-variable-resolves), et lisez-les comme variables d'environnement dans les processus qui les reçoivent.

555 

556| Variable | Se résout à | Utilisez-la pour |

557| :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------ |

558| `${CLAUDE_PLUGIN_ROOT}` | Chemin absolu de la version installée du plugin | Scripts, binaires, et fichiers config regroupés avec le plugin |

559| `${CLAUDE_PLUGIN_DATA}` | `~/.claude/plugins/data/<id>/`, créé à la première référence et conservé à travers les mises à jour de plugin. `<id>` est l'identifiant du plugin avec chaque caractère autre qu'une lettre, un chiffre, `_`, ou `-` remplacé par `-` | Dépendances installées comme `node_modules`, code généré, et caches |

560| `${CLAUDE_PROJECT_DIR}` | La racine du projet | Scripts et fichiers config locaux au projet |

561 

562`${CLAUDE_PLUGIN_ROOT}` change lorsque le plugin se met à jour, donc n'écrivez pas d'état là. Pour où la racine se déplace et quand l'ancien répertoire est nettoyé, voir la [page de chargement](/docs/fr/plugins/loading).

563 

564Lorsque vous désinstallez le plugin du dernier endroit où il est installé, le répertoire `${CLAUDE_PLUGIN_DATA}` est supprimé sauf si vous passez [`--keep-data`](/docs/fr/plugins/cli-reference).

565 

566<h3 id="where-each-variable-resolves">

567 Où chaque variable se résout

568</h3>

569 

570Dans chaque composant de plugin, les références `${...}` se résolvent en ligne dans des champs spécifiques, et certains composants reçoivent également les variables dans leur environnement de processus :

571 

572| Composant de plugin | Champs où `${...}` se résout | Exporté au processus |

573| :---------------------------------------- | :------------------------------------------ | :------------------------------------------------------------------------------------------------ |

574| Commandes hook | N'importe où dans `command` et `args` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR`, et `CLAUDE_PLUGIN_OPTION_<KEY>` |

575| Commandes monitor | N'importe où dans `command` | Non exporté |

576| Serveurs MCP `stdio` | `command`, `args`, `env` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA` |

577| Serveurs MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` | Non applicable |

578| Serveurs LSP | `command`, `args`, `env`, `workspaceFolder` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR` |

579| Contenu de skill, de commande, et d'agent | N'importe où dans le corps Markdown | Non applicable |

580 

581Les variables ne sont pas présentes dans l'environnement des commandes que Claude exécute via l'outil Bash, dans la session principale ou dans un sous-agent. Dans le contenu de skill, de commande, et d'agent, écrivez la référence `${...}` dans le corps Markdown à la place, et Claude Code substitue le chemin en ligne lorsqu'il charge le contenu.

582 

583<h3 id="quoting-and-path-separators">

584 Guillemets et séparateurs de chemin

585</h3>

586 

587Gardez chaque chemin substitué comme un seul argument :

588 

589* **Commandes hook** : utilisez [exec form](/docs/fr/hooks#exec-form-and-shell-form) avec `args` afin que chaque chemin soit un argument sans guillemets

590* **Hooks de forme shell et commandes monitor** : enveloppez la variable entre guillemets doubles afin qu'un chemin avec des espaces reste un mot

591 

592Ce hook de forme shell exécute un script regroupé avec le plugin :

593 

594```json theme={null}

595{

596 "hooks": {

597 "PostToolUse": [

598 {

599 "hooks": [

600 {

601 "type": "command",

602 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/process.sh"

603 }

604 ]

605 }

606 ]

607 }

608}

609```

610 

611Sur Windows, les chemins substitués utilisent des barres obliques avant afin qu'un shell ne lise pas les barres obliques inverses comme des échappements.

612 

613<h2 id="standard-layout">

614 Disposition standard

615</h2>

616 

617Chaque type de composant a un emplacement par défaut sous la racine du plugin, utilisé lorsque le manifeste ne pointe pas ailleurs.

618 

619| Composant | Emplacement par défaut | Contenu |

620| :--------------- | :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

621| Manifeste | `.claude-plugin/plugin.json` | Métadonnées et configuration du plugin. Optionnel |

622| Skills | `skills/` | Un `<name>/SKILL.md` par skill. Un plugin avec `SKILL.md` à sa racine, pas de `skills/`, et pas de clé `skills` se charge comme une seule skill |

623| Commandes | `commands/` | Fichiers de commande Markdown plats. Préférez `skills/` pour les nouveaux plugins |

624| Agents | `agents/` | Fichiers Markdown d'agent. Les sous-dossiers font partie du [nom d'agent](/docs/fr/plugins/components#agents) |

625| Hooks | `hooks/hooks.json` | Configuration des hooks |

626| Serveurs MCP | `.mcp.json` | Définitions des serveurs MCP |

627| Serveurs LSP | `.lsp.json` | Configurations des serveurs LSP |

628| Styles de sortie | `output-styles/` | Fichiers de style de sortie Markdown |

629| Workflows | `workflows/` | Fichiers Workflow `.js` |

630| Thèmes | `themes/` | Fichiers de thème JSON |

631| Monitors | `monitors/monitors.json` | Le tableau monitors |

632| Exécutables | `bin/` | Les fichiers ici sont sur le `PATH` de l'outil Bash tandis que le plugin est activé, donc Claude les exécute comme des commandes nues. claude.ai et Cowork n'installent pas un plugin qui a ce répertoire, y compris un que vous [distribuez via les paramètres d'organisation claude.ai](/docs/fr/plugins/host-marketplace#distribute-through-organization-settings) |

633| Paramètres | `settings.json` | Valeurs par défaut `agent` et `subagentStatusLine` appliquées tandis que le plugin est activé |

634 

635Un plugin qui utilise chaque emplacement par défaut, plus un dossier `scripts/` que ses hooks appellent, est disposé comme ceci :

636 

637```text theme={null}

638deploy-tools/

639├── .claude-plugin/

640│ └── plugin.json

641├── skills/

642│ └── deploy/

643│ └── SKILL.md

644├── commands/

645│ └── status.md

646├── agents/

647│ └── reviewer.md

648├── hooks/

649│ └── hooks.json

650├── monitors/

651│ └── monitors.json

652├── output-styles/

653│ └── terse.md

654├── themes/

655│ └── dracula.json

656├── workflows/

657│ └── release-audit.js

658├── bin/

659│ └── deploy-tool

660├── scripts/

661│ └── format.sh

662├── settings.json

663├── .mcp.json

664└── .lsp.json

665```

666 

667Pour cliquer à travers cette disposition et lire ce que chaque fichier fait, ouvrez l'[explorateur de plugin](/docs/fr/plugins/components#explore-the-plugin-directory).

668 

669Un `CLAUDE.md` à la racine du plugin n'est pas chargé comme contexte, et `claude plugin validate` avertit lorsqu'il en trouve un. Pour inclure des instructions qui se chargent dans le contexte de Claude, mettez-les dans une skill.

670 

671<h2 id="marketplace-entries-and-the-manifest">

672 Entrées de marketplace et le manifeste

673</h2>

674 

675Une [entrée de marketplace](/docs/fr/plugins/marketplace-reference) accepte chaque champ de cette page à côté de [ses propres champs](/docs/fr/plugins/marketplace-reference#plugin-entries), y compris `strict`.

676 

677Le champ `strict` décide si l'entrée peut ajouter des composants à un plugin qui a son propre `plugin.json`. Il est par défaut `true`.

678 

679<h3 id="how-entry-fields-combine-with-plugin-json">

680 Comment les champs d'entrée se combinent avec `plugin.json`

681</h3>

682 

683L'entrée sert soit de manifeste, ajoute des composants à celui-ci, soit entre en conflit avec celui-ci :

684 

685* **Pas de `plugin.json`** : l'entrée est le manifeste, indépendamment de `strict`. Les `hooks` d'entrée se chargent uniquement dans la forme d'objet en ligne. Pour un chemin de fichier ou un tableau là, l'onglet **Errors** `/plugin` affiche une erreur `not yet supported in a marketplace entry`

686* **`plugin.json` présent, `strict` non défini ou `true`** : Claude Code charge le manifeste et ajoute les `commands`, `agents`, `skills`, `outputStyles`, et `themes` de l'entrée à celui-ci. Pour `hooks`, les matchers de l'entrée pour un événement remplacent les matchers du manifeste pour ce même événement, et les événements que seul le manifeste déclare gardent les leurs

687* **`plugin.json` présent, `strict: false`** : une entrée qui déclare l'un de `commands`, `agents`, `skills`, `hooks`, `outputStyles`, ou `themes` est un conflit, et le plugin ne se charge pas avec `Plugin <name> has conflicting manifests`

688 

689Lorsqu'une [entrée de marketplace dont la `source` est la racine du marketplace](/docs/fr/plugins/marketplace-reference) liste des sous-répertoires `skills` spécifiques, seuls ces sous-répertoires se chargent, et le répertoire par défaut `skills/` du plugin n'est pas analysé. Une clé `skills` dans le manifeste [s'ajoute à la valeur par défaut](#how-each-key-combines-with-its-default-location).

690 

691<h3 id="metadata-precedence">

692 Précédence des métadonnées

693</h3>

694 

695Certains champs de métadonnées ont une précédence fixe indépendamment de `strict` :

696 

697* **`defaultEnabled` et champs d'affichage** : le `defaultEnabled` de l'entrée et ses [champs d'affichage](/docs/fr/plugins/marketplace-reference#entry-and-plugin-json) comme `displayName` remplacent ceux du manifeste

698* **`version`** : le `version` du manifeste remplace celui de l'entrée

699* **`name`** : lorsque l'entrée liste le plugin sous un `name` différent de celui du manifeste, `enabledPlugins` utilise le nom de l'entrée, et les composants sont espacés de noms sous le nom du manifeste

700 

701Pour le tableau de précédence complet, voir [Mode strict](/docs/fr/plugins/marketplace-reference).

702 

703<h2 id="next-steps">

704 Étapes suivantes

705</h2>

706 

707* [Ajouter des composants à un plugin](/docs/fr/plugins/components) : ce que chaque composant fait à l'exécution, avec un exemple qui valide

708* [Référence de marketplace](/docs/fr/plugins/marketplace-reference) : les champs d'entrée qu'un marketplace peut définir pour votre plugin

709* [Référence des commandes de plugin](/docs/fr/plugins/cli-reference#plugin-validate) : les drapeaux et la sortie de `claude plugin validate`

710* [Dépanner les plugins](/docs/fr/plugins/troubleshooting#claude-plugin-validate-reports-errors) : chaque message de validation avec sa correction

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Référence Marketplace

6 

7> Référence complète des champs marketplace.json, des entrées de plugin et des objets source de plugin et marketplace, avec les emplacements où chacun est valide.

8 

9`marketplace.json` est le fichier qui définit une marketplace de plugin. Il contient le nom de la marketplace, son propriétaire et une entrée par plugin. La source de plugin de chaque entrée indique où Claude Code récupère ce plugin.

10 

11Une source marketplace est un objet séparé qui indique où Claude Code récupère le fichier marketplace lui-même. Vous en écrivez un dans les paramètres, ou Claude Code en crée un lorsque vous exécutez `claude plugin marketplace add`.

12 

13Cette référence est destinée aux responsables de marketplace qui ont besoin d'un nom ou d'une valeur de champ exact, et aux administrateurs qui ont besoin de savoir quelles valeurs `source` sont valides dans [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces), [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) et [`blockedMarketplaces`](/docs/fr/plugins/org#restrict-what-users-can-install).

14 

15<Note>

16 Ces cas sont couverts sur d'autres pages :

17 

18 * **Créer ou héberger une marketplace** : voir [Créer une marketplace](/docs/fr/plugins/create-marketplace) et [Héberger et maintenir une marketplace](/docs/fr/plugins/host-marketplace)

19 * **Recettes de liste blanche et liste noire** : voir [Gérer les plugins pour votre organisation](/docs/fr/plugins/org)

20</Note>

21 

22Trouvez la section pour ce que vous écrivez ou lisez :

23 

24* **Le fichier marketplace** : [Champs de niveau supérieur](#top-level-fields) et [Entrées de plugin](#plugin-entries)

25* **La `source` d'une entrée** : [Sources de plugin](#plugin-sources)

26* **Un objet `source` dans les paramètres** : [Sources marketplace](#marketplace-sources)

27* **Sortie de [`claude plugin validate <path>`](/docs/fr/plugins/cli-reference)** : [Messages de validation](#validation-messages), qui mappe chaque message au champ qu'il nomme

28 

29<h2 id="marketplace-file">

30 Fichier marketplace

31</h2>

32 

33Enregistrez le fichier marketplace à `.claude-plugin/marketplace.json` dans le répertoire de votre marketplace. Si vous conservez le fichier ailleurs dans le référentiel, les utilisateurs doivent déclarer la marketplace dans [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) avec `path` défini sur sa source, car `claude plugin marketplace add` n'a pas d'option pour cela.

34 

35Le répertoire qui contient `.claude-plugin/` s'appelle la racine marketplace, et chaque source de plugin relative se résout à partir de celui-ci, pas à partir de `.claude-plugin/`.

36 

37Chaque utilisateur enregistre une marketplace par `name`, donc un utilisateur ne peut pas avoir deux marketplaces avec le même nom enregistrées à la fois.

38 

39Claude Code ignore une clé de niveau supérieur inconnue ou une clé d'entrée de plugin plutôt que de la rejeter, donc une faute de frappe se charge silencieusement. `claude plugin validate` signale chaque clé inconnue comme un avertissement.

40 

41<h3 id="reserved-names">

42 Noms réservés

43</h3>

44 

45Vous ne pouvez pas donner à votre marketplace l'un des noms suivants :

46 

47* **Noms de marketplace officiels** : `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `life-sciences`, `knowledge-work-plugins`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins` et `claude-tag-plugins`. Réservés sauf si la marketplace provient d'une [source marketplace](#marketplace-sources) `github` ou `git` sous `github.com/anthropics/`.

48* **Noms de marketplace communautaire** : `claude-community`, `claude-plugins-community` et `healthcare`. Réservés selon la même règle que les noms officiels.

49* **Noms de répertoire de plugin** : `anthropic-plugin-directory` et `claude-plugin-directory`. Réservés selon la même règle que les noms officiels.

50* **Noms qui usurpent l'identité d'une marketplace officielle** : des noms tels que `official-claude-plugins` ou `claude-plugins-v2`, et tout nom contenant un caractère non-ASCII. L'erreur est `Marketplace name impersonates an official Anthropic/Claude marketplace`. Un caractère de contrôle ou de formatage bidirectionnel dans un nom signale également `Marketplace name cannot contain control or bidirectional-formatting characters`.

51* <span id="reserved-name-spellings" />**Une autre orthographe d'un nom réservé** : un nom qui diffère d'un nom réservé uniquement par un point final, ou par un symbole autre qu'un trait d'union à la place d'un trait d'union, donc `claude.code.plugins` compte comme `claude-code-plugins`. `claude plugin validate` accepte un tel nom ; l'ajout de la marketplace échoue avec [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/fr/errors#marketplace-name-is-another-spelling-of-a-reserved-name), et une marketplace déjà enregistrée sous l'une d'elles cesse de se charger. Cette vérification nécessite Claude Code v2.1.280 ou ultérieure.

52* **Noms que Claude Code utilise pour les plugins qui ne proviennent pas d'une marketplace** : `inline` pour les plugins chargés avec [`--plugin-dir`](/docs/fr/cli-reference), `builtin` pour les plugins intégrés, `skills-dir` pour les plugins chargés automatiquement à partir de [`.claude/skills/`](/docs/fr/skills) et `synced` pour les plugins synchronisés à partir de votre compte claude.ai. `claude-plugin-test` est également réservé. `skills-dir` apparaît également comme `{"source": "skills-dir"}` dans `strictKnownMarketplaces` et `blockedMarketplaces`, décrits sous [Valeurs source valides uniquement dans les listes de politique](#source-values-valid-only-in-policy-lists).

53* **`npm`, `pip`, `uv`, `cargo`, `github` et `gh`** : réservés dans n'importe quelle casse. Cette vérification nécessite Claude Code v2.1.275 ou ultérieure.

54* **Noms commençant par `claudeai-`** : réservés pour les marketplaces hébergées sur claude.ai. `claude plugin marketplace add` refuse toute autre marketplace qui en utilise un avec `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.

55 

56<h2 id="top-level-fields">

57 Champs de niveau supérieur

58</h2>

59 

60Le tableau liste chaque clé que Claude Code lit à partir de `marketplace.json`. `name`, `owner` et `plugins` sont obligatoires.

61 

62| Champ | Type | Description |

63| :----------------------------------------- | :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

64| `name` | string | Identifiant de marketplace. Pas d'espaces, de caractères de contrôle ou de caractères de formatage bidirectionnel, pas de `/` ou `\`, pas de `..` et pas `.`. Voir [Noms réservés](#reserved-names). Les utilisateurs le tapent après `@` lorsqu'ils installent un plugin |

65| `owner` | object | Informations du responsable. `name` est obligatoire ; `email` et `url` sont optionnels |

66| `plugins` | array | [Entrées de plugin](#plugin-entries). Chaque entrée est validée indépendamment, donc une entrée invalide ne fait pas échouer la marketplace |

67| `$schema` | string | URL JSON Schema pour l'autocomplétion de l'éditeur. Ignorée au moment du chargement |

68| `description` | string | Description de la marketplace affichée aux utilisateurs. `claude plugin validate` avertit lorsqu'elle est manquante |

69| `version` | string | Version du manifeste marketplace |

70| `metadata.description`, `metadata.version` | string | Emplacement alternatif pour `description` et `version` |

71| `metadata.pluginRoot` | string | Répertoire sous lequel les noms de source de plugin nus se résolvent. Voir [Source de plugin avec chemin relatif](#relative-path-plugin-source). Nécessite Claude Code v2.1.239 ou ultérieure |

72| `forceRemoveDeletedPlugins` | boolean | Lorsque `true`, un plugin que vous supprimez de `plugins` est désinstallé sur les machines des utilisateurs. Voir [Héberger et maintenir une marketplace](/docs/fr/plugins/host-marketplace) |

73| `allowCrossMarketplaceDependenciesOn` | array of strings | Noms de marketplace dont les plugins peuvent être installés en tant que dépendances des plugins de cette marketplace. Lorsque vous installez un plugin, seule la liste de la propre marketplace du plugin s'applique, pour toute sa chaîne de dépendances. Voir [Dépendances de plugin](/docs/fr/plugins/dependencies) |

74| `renames` | object | Mappage d'un ancien `name` de plugin à son nom actuel, ou à `null` pour un plugin que vous avez supprimé. Nécessite Claude Code v2.1.193 ou ultérieure. Voir [Héberger et maintenir une marketplace](/docs/fr/plugins/host-marketplace) |

75 

76<h2 id="plugin-entries">

77 Entrées de plugin

78</h2>

79 

80Chaque objet du tableau `plugins` de niveau supérieur de `marketplace.json` nomme un plugin et indique où le récupérer. `name` et `source` sont obligatoires.

81 

82Une entrée accepte également tous les [champs `plugin.json`](/docs/fr/plugins/manifest-reference), tels que `description`, `version`, `author`, `commands` et `hooks`. Pour savoir quand ces champs s'appliquent, consultez [Comment une entrée se combine avec plugin.json](#entry-and-plugin-json).

83 

84Le tableau répertorie les champs propres à l'entrée et les champs du manifeste dont le sens change dans une entrée.

85 

86| Champ | Type | Description |

87| :--------------- | :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

88| `name` | string | Identifiant du plugin, sans espaces, caractères de contrôle ou caractères de formatage bidirectionnel. Les utilisateurs le tapent avant `@` lors de l'installation, même si le propre `plugin.json` du plugin définit un `name` différent |

89| `source` | string ou object | Où récupérer le plugin. Consultez [Sources de plugin](#plugin-sources) |

90| `description` | string | Affiché dans les listes et détails [`/plugin`](/docs/fr/plugins/install) |

91| `version` | string | Chaîne de version pour le plugin. Quand `plugin.json` définit également `version`, `plugin.json` a la priorité et `claude plugin validate` avertit. Consultez [Référence de chargement de plugin](/docs/fr/plugins/loading) |

92| `category` | string | Catégorie libre pour organiser le catalogue |

93| `tags` | array of strings | Balises libres pour la recherche |

94| `strict` | boolean | Par défaut `true`. Si `plugin.json` est la source définitive des composants du plugin. Consultez [Mode strict](#strict-mode) |

95| `relevance` | object | Signaux qui indiquent à Claude Code quand suggérer le plugin. Consultez [Recommander des plugins pour votre organisation](/docs/fr/plugins/relevance) |

96| `dependencies` | array | Plugins qui doivent être activés pour que celui-ci fonctionne. Chaque élément est `"name"`, `"name@marketplace"` ou un objet. Consultez [Dépendances de plugin](/docs/fr/plugins/dependencies) |

97| `defaultEnabled` | boolean | Par défaut `true`. Si le plugin démarre activé quand l'utilisateur ne l'a pas défini dans [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins). La valeur de l'entrée a la priorité sur `plugin.json` |

98| `displayName` | string | Nom lisible affiché dans l'interface utilisateur. Quand ni l'entrée ni le `plugin.json` du plugin n'en définit un, les utilisateurs voient le `name` du plugin |

99| `metadata` | object | Objet libre pour vos propres champs. Claude Code ne le lit pas. Nécessite Claude Code v2.1.222 ou ultérieur |

100| `headers` | object | En-têtes HTTP que Claude Code envoie quand il télécharge l'[archive](#archive-plugin-source) de cette entrée. Un en-tête défini ici remplace un en-tête du même nom de la source du marketplace [`headers`](#fields-by-type). Nécessite Claude Code v2.1.238 ou ultérieur |

101| `headersHelper` | string | Commande qui imprime les en-têtes de téléchargement d'archive de cette entrée sous la forme d'un objet JSON, pour une accréditation qui expire. L'entrée doit également définir [`"strict": false`](#strict-mode). Nécessite Claude Code v2.1.238 ou ultérieur. Consultez [Authentifier les téléchargements d'archive](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) |

102 

103<h3 id="entry-and-plugin-json">

104 Comment une entrée se combine avec plugin.json

105</h3>

106 

107Les champs de l'entrée s'appliquent différemment à un plugin récupéré qui a son propre `.claude-plugin/plugin.json` et à un qui n'en a pas :

108 

109* **Pas de `plugin.json`** : l'entrée est le manifeste indépendamment de `strict`. Chaque champ de manifeste dans l'entrée s'applique, y compris [`mcpServers`, `lspServers`, `userConfig` et `channels`](/docs/fr/plugins/manifest-reference).

110* **`plugin.json` présent** : `plugin.json` est le manifeste. Le [mode strict](#strict-mode) décide si les six champs de composant de l'entrée, `commands`, `agents`, `skills`, `hooks`, `outputStyles` et `themes`, sont combinés avec lui ou rejetés comme un conflit. L'entrée `mcpServers`, `lspServers`, `userConfig` et `channels` ne s'appliquent pas. Déclarez-les dans `plugin.json`.

111 

112<h4 id="hooks-in-an-entry">

113 Hooks dans une entrée

114</h4>

115 

116Écrivez les `hooks` d'entrée comme un objet en ligne qui mappe les noms d'événements de hook aux tableaux de correspondance. Si vous écrivez un chemin de fichier ou un tableau à la place, `claude plugin validate` le passe. Ces hooks ne s'exécutent jamais, et Claude Code signale une erreur `not yet supported in a marketplace entry` pour le plugin. Mettez les hooks basés sur des fichiers dans le propre [`hooks/hooks.json`](/docs/fr/plugins/components) du plugin ou `plugin.json`.

117 

118<h4 id="display-fields">

119 Champs d'affichage

120</h4>

121 

122L'entrée et le propre `plugin.json` du plugin peuvent tous deux définir les champs d'affichage `displayName`, `description`, `author`, `homepage`, `repository`, `license` et `keywords`. Les utilisateurs voient ces valeurs dans les listes et détails des plugins, avant et après l'installation :

123 

124* Pour un champ que vous définissez sur l'entrée, les utilisateurs voient la valeur de l'entrée, même quand `plugin.json` en définit une différente.

125* Pour un champ que l'entrée laisse non défini, les utilisateurs voient la valeur `plugin.json`.

126 

127Avant l'installation, Claude Code ne peut lire `plugin.json` que pour les entrées avec une [source de chemin relatif](#relative-path-plugin-source), dont les fichiers de plugin se trouvent à l'intérieur du marketplace lui-même. Pour une entrée avec tout autre type de source, les utilisateurs ne voient que les champs propres de l'entrée jusqu'à ce qu'ils installent le plugin.

128 

129<h3 id="strict-mode">

130 Mode strict

131</h3>

132 

133`strict` décide ce qui se passe quand le plugin récupéré a son propre `plugin.json` et que l'entrée déclare également l'un des [champs de composant](#entry-and-plugin-json) : `commands`, `agents`, `skills`, `hooks`, `outputStyles` ou `themes`. Avec `strict: true`, la valeur par défaut, Claude Code ajoute les champs de composant de l'entrée à `plugin.json`, sauf `hooks`, dont les correspondances remplacent celles du manifeste par événement. Avec `strict: false`, une entrée qui déclare un champ de composant est un conflit, et le plugin ne se charge pas. Le tableau montre chaque combinaison de `strict`, `plugin.json` et des champs de composant de l'entrée.

134 

135| `strict` | `plugin.json` | Champs de composant d'entrée | Résultat |

136| :--------------------------- | :------------ | :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

137| any | absent | any | L'entrée est le manifeste |

138| `true`, la valeur par défaut | présent | any | `plugin.json` est l'autorité. Claude Code ajoute les champs de composant de l'entrée à celui-ci, sauf `hooks`, dont les correspondances [remplacent celles du manifeste par événement](/docs/fr/plugins/manifest-reference#how-entry-fields-combine-with-plugin-json) |

139| `false` | présent | none | `plugin.json` est le manifeste, comme avec `true` |

140| `false` | présent | un ou plusieurs | Conflit. Le plugin ne se charge pas avec `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components` |

141 

142<h2 id="plugin-sources">

143 Sources de plugin

144</h2>

145 

146La `source` d'une entrée de plugin indique où Claude Code récupère ce plugin. C'est soit une chaîne de chemin relatif, soit un objet dont la propre clé `source` nomme le type, donc une entrée ressemble à `"source": { "source": "github", "repo": "your-org/formatter" }`.

147 

148Le tableau liste chaque type de source de plugin et ses champs.

149 

150| Type | Champs | Notes |

151| :------------- | :------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

152| Chemin relatif | la chaîne elle-même | Un répertoire à l'intérieur de la marketplace, résolu à partir de la racine marketplace. Doit commencer par `./`, sauf si vous écrivez un [nom nu sous `metadata.pluginRoot`](#relative-path-plugin-source). `"."` seul signifie la racine elle-même |

153| `github` | `repo`, `ref`, `sha` | Référentiel GitHub sous la forme `owner/repo` |

154| `url` | `url`, `ref`, `sha` | Tout référentiel git par URL |

155| `git-subdir` | `url`, `path`, `ref`, `sha` | Un sous-répertoire d'un référentiel git, récupéré avec un clone partiel clairsemé |

156| `npm` | `package`, `version`, `registry` | Package npm, récupéré avec votre client npm et décompressé sans exécuter les scripts d'installation |

157| `archive` | `url`, `sha256` | Archive Zip sur HTTPS. Nécessite Claude Code v2.1.224 ou ultérieure |

158| `command` | `command`, `timeout`, `mode` | Répertoire imprimé par une commande que Claude Code exécute sur la machine de l'utilisateur. Nécessite Claude Code v2.1.229 ou ultérieure |

159 

160Les noms `url` et `github` sont également des types de [source marketplace](#marketplace-sources), où `url` signifie un lien direct vers un fichier `marketplace.json` plutôt qu'un référentiel git. `git` n'existe que comme source marketplace, et `npm` existe comme les deux. `git-subdir`, `archive` et `command` n'existent que comme sources de plugin.

161 

162Utilisez un chemin relatif pour un plugin dans un sous-répertoire du référentiel marketplace lui-même. Utilisez `git-subdir` pour un sous-répertoire d'un autre référentiel.

163 

164Les sources `github`, `url` et `git-subdir` partagent les champs `ref` et `sha` :

165 

166* **`ref`** : une branche ou une balise. Par défaut, la branche par défaut du référentiel.

167* **`sha`** : un SHA de commit complet de 40 caractères en minuscules. Lorsque vous définissez à la fois `ref` et `sha`, Claude Code extrait `sha`. Sur la plupart des hôtes git, y compris GitHub, GitLab et Bitbucket, cela signifie que l'installation réussit même si la branche ou la balise nommée par `ref` a depuis été supprimée en amont, tant que le commit est toujours accessible à partir du référentiel. Certains serveurs, tels que AWS CodeCommit, ne supportent pas la récupération de commits par SHA. Sur ces serveurs, le `ref` doit toujours exister et le commit épinglé doit être accessible à partir de celui-ci.

168 

169Pour savoir comment chaque type est récupéré, mis en cache et versionné, voir [Référence de chargement de plugin](/docs/fr/plugins/loading).

170 

171<h3 id="relative-path-plugin-source">

172 Source de plugin avec chemin relatif

173</h3>

174 

175Le chemin se résout à partir de la racine marketplace. `./plugins/formatter` est `<root>/plugins/formatter` même si le fichier marketplace est dans `<root>/.claude-plugin/`.

176 

177Un chemin contenant `..` échoue la validation. Sur macOS et Linux, Claude Code refuse un chemin d'entrée qui contient une barre oblique inverse n'importe où après le `./` initial, donc écrivez le chemin avec des barres obliques avant.

178 

179```json theme={null}

180{ "name": "formatter", "source": "./plugins/formatter" }

181```

182 

183Un chemin relatif se résout uniquement lorsque Claude Code a les fichiers de la marketplace, donc vérifiez le type de [source marketplace](#marketplace-sources) :

184 

185* **`github`, `git`, `file` et `directory`** : Claude Code a les fichiers de la marketplace.

186* **`url`** : Claude Code récupère uniquement `marketplace.json`, donc les chemins relatifs ne peuvent pas se résoudre. Donnez à chaque plugin une source d'objet à la place, telle que `github` ou `git-subdir`.

187* **`settings`** : les chemins relatifs sont rejetés d'emblée.

188 

189<h4 id="bare-names-under-pluginroot">

190 Noms nus sous pluginRoot

191</h4>

192 

193Un nom nu est un seul nom de répertoire sans `/`, tel que `"formatter"`. Pour écrire des noms nus au lieu de chemins `./`, définissez [`metadata.pluginRoot`](#top-level-fields) sur le répertoire sous lequel ils se résolvent. Avec `"pluginRoot": "./plugins"`, `"source": "formatter"` se résout à `./plugins/formatter`. Nécessite Claude Code v2.1.239 ou ultérieure.

194 

195`metadata.pluginRoot` a ces limites :

196 

197* Il doit lui-même être un chemin relatif à l'intérieur de la marketplace.

198* Il n'a aucun effet sur une source qui commence déjà par `./`.

199* Une source qui contient un `/`, telle que `team-a/formatter`, n'est pas un nom nu et a toujours besoin du préfixe `./`, même lorsque `metadata.pluginRoot` est défini.

200 

201<h3 id="github-plugin-source">

202 Source de plugin github

203</h3>

204 

205`repo` prend `owner/repo`. `ref` et `sha` sont optionnels.

206 

207```json theme={null}

208{

209 "name": "formatter",

210 "source": {

211 "source": "github",

212 "repo": "your-org/formatter",

213 "ref": "v2.0.0",

214 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

215 }

216}

217```

218 

219<h3 id="url-plugin-source">

220 Source de plugin url

221</h3>

222 

223`url` est une URL git complète : `https://`, `http://`, `file://` ou `git@`. Un suffixe `.git` n'est pas requis, donc les URL Azure DevOps et AWS CodeCommit fonctionnent telles qu'elles sont écrites. Ce type ne prend pas le raccourci `owner/repo`.

224 

225```json theme={null}

226{

227 "name": "formatter",

228 "source": {

229 "source": "url",

230 "url": "https://gitlab.example.com/your-group/formatter.git",

231 "ref": "main"

232 }

233}

234```

235 

236<h3 id="git-subdir-plugin-source">

237 Source de plugin git-subdir

238</h3>

239 

240`url` accepte une URL git complète ou le raccourci GitHub `owner/repo`. `path` est le sous-répertoire qui contient le plugin, et Claude Code télécharge uniquement ce sous-répertoire.

241 

242```json theme={null}

243{

244 "name": "formatter",

245 "source": {

246 "source": "git-subdir",

247 "url": "https://github.com/your-org/monorepo.git",

248 "path": "tools/formatter"

249 }

250}

251```

252 

253<h3 id="npm-plugin-source">

254 Source de plugin npm

255</h3>

256 

257Une source `npm` prend ces champs :

258 

259* `package` : un nom de package, ou un nom scopé tel que `@your-org/formatter`

260* `version` : une version ou une plage

261* `registry` : une URL de registre pour un package qui n'est pas sur le registre par défaut

262 

263Claude Code récupère le package avec votre client npm. Les scripts d'installation du package, tels que `preinstall` ou `postinstall`, ne s'exécutent jamais, et ses dépendances ne sont pas installées lors de la récupération. Si le package a un fichier de verrouillage supporté à côté de son `package.json`, Claude Code installe ces [dépendances de package Node.js](/docs/fr/plugins/loading#node-js-package-dependencies) dans une étape séparée, également avec les scripts désactivés.

264 

265```json theme={null}

266{

267 "name": "formatter",

268 "source": {

269 "source": "npm",

270 "package": "@your-org/formatter",

271 "version": "^2.0.0",

272 "registry": "https://npm.example.com"

273 }

274}

275```

276 

277<h3 id="archive-plugin-source">

278 Source de plugin archive

279</h3>

280 

281`url` doit utiliser `https://` et ne peut pas pointer vers un hôte loopback, link-local ou cloud-metadata.

282 

283La racine du plugin peut être au sommet du zip ou un répertoire plus bas.

284 

285`sha256` est le digest de l'archive en tant que 64 caractères hexadécimaux, majuscules ou minuscules. Lorsque vous le définissez, Claude Code refuse un téléchargement qui ne correspond pas.

286 

287```json theme={null}

288{

289 "name": "formatter",

290 "source": {

291 "source": "archive",

292 "url": "https://artifacts.example.com/formatter-2.0.0.zip",

293 "sha256": "6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1"

294 }

295}

296```

297 

298<h3 id="command-plugin-source">

299 Source de plugin command

300</h3>

301 

302Utilisez une source `command` lorsqu'un outil installé sur la machine de l'utilisateur produit le répertoire du plugin, tel qu'un IDE qui rend son plugin pour la chaîne d'outils que l'utilisateur a sélectionnée. Claude Code exécute la commande lorsque l'utilisateur installe ou met à jour le plugin, et [à nouveau une fois par session](/docs/fr/plugins/loading#when-a-command-source-re-runs), donc les utilisateurs obtiennent la sortie modifiée de l'outil sans réinstaller.

303 

304Une source `command` prend ces champs :

305 

306* `command` : une commande shell qui imprime le chemin absolu du répertoire du plugin en une seule ligne et quitte 0. Claude Code affiche la chaîne entière aux utilisateurs pour examen avant de l'exécuter. Écrivez-la en ASCII imprimable, au maximum 500 caractères, sans suite de quatre espaces ou plus.

307* `timeout` : un nombre entier de secondes de 1 à 600. Par défaut 60.

308* `mode` : `copy`, la valeur par défaut, ou `link`. Voir [Mode copie et mode lien](#copy-mode-and-link-mode).

309 

310```json theme={null}

311{

312 "name": "formatter",

313 "source": {

314 "source": "command",

315 "command": "my-tool claude-plugin-path",

316 "timeout": 120

317 }

318}

319```

320 

321Pour savoir comment les utilisateurs acceptent la commande, voir [Installer à partir de votre shell](/docs/fr/plugins/install#install-from-your-shell). Pour ce que les utilisateurs voient après l'avoir modifiée, voir [Modifier la commande d'une source command](/docs/fr/plugins/host-marketplace#change-the-command-of-a-command-source). Les administrateurs désactivent les sources command avec [`disableCommandPluginSources`](/docs/fr/settings-reference#disablecommandpluginsources).

322 

323<h4 id="what-the-command-must-do">

324 Ce que la commande doit faire

325</h4>

326 

327Écrivez la commande pour répondre à ces exigences :

328 

329* **Shell et répertoire de travail** : Claude Code exécute la commande via `sh`, ou via `cmd.exe` sur Windows, à partir du répertoire personnel de l'utilisateur. Donnez un chemin absolu ou une commande sur `PATH`.

330* **Sortie** : imprimez exactement une ligne sur stdout, le chemin absolu du répertoire du plugin, et quittez 0 dans les `timeout` secondes.

331* **Contenu du répertoire** : le répertoire contient le plugin complet au moment où la commande quitte. Le chemin peut différer d'une exécution à l'autre.

332 

333<h4 id="output-that-fails-the-install-or-update">

334 Sortie qui échoue l'installation ou la mise à jour

335</h4>

336 

337L'installation ou la mise à jour échoue lorsque la commande quitte non-zéro, s'exécute plus longtemps que `timeout`, ou imprime autre chose qu'un chemin absolu. Elle échoue également lorsque le répertoire imprimé est l'un de ceux-ci :

338 

339* **Pas de contenu de plugin** : le répertoire imprimé n'a pas de contenu de plugin à son niveau supérieur, tel qu'un répertoire `.claude-plugin/` ou un répertoire `skills/`, `commands/`, `agents/` ou `hooks/`.

340* **Le répertoire de la session elle-même** : le répertoire imprimé est celui dans lequel Claude Code a été démarré, ou l'un de ses parents.

341* **Un chemin réseau** : sur Windows, le chemin imprimé est un chemin UNC.

342* **Trop volumineux à copier** : en mode copie, le répertoire est plus grand que 256 MiB ou a plus de 20 000 entrées.

343 

344<h4 id="copy-mode-and-link-mode">

345 Mode copie et mode lien

346</h4>

347 

348`mode` décide si Claude Code copie le répertoire imprimé ou l'utilise sur place :

349 

350* **`copy`** : Claude Code copie le répertoire dans le cache du plugin et dérive la [version du plugin](/docs/fr/plugins/loading#how-claude-code-computes-the-version) d'un hash des fichiers copiés. Votre outil peut supprimer ou réécrire le répertoire après la sortie de la commande. Une réexécution qui produit des fichiers identiques compte comme à jour.

351* **`link`** : Claude Code remplit l'entrée du cache du plugin avec un lien vers chaque entrée de niveau supérieur du répertoire imprimé et charge les fichiers sur place. Rien n'est copié, les contenus de fichiers ne sont pas hashés, et les limites de taille ne s'appliquent pas. Utilisez-le pour un répertoire trop volumineux à copier, tel qu'une exportation SDK rendue.

352 

353Un plugin en mode lien a ces exigences :

354 

355* **Gardez le répertoire en place** : Claude Code charge le plugin via les liens à chaque démarrage, donc le répertoire imprimé doit rester où il est tant que le plugin reste installé.

356* **Imprimez un chemin différent pour signaler un nouveau contenu** : la version provient du chemin réel du répertoire imprimé et de ses entrées de niveau supérieur, pas des fichiers à l'intérieur.

357* **Gardez les symlinks de niveau supérieur à l'intérieur du répertoire** : l'installation échoue si une entrée de niveau supérieur est un symlink qui pointe en dehors du répertoire imprimé.

358* **Incluez `node_modules`** : Claude Code saute l'[installation de dépendance de package Node.js](/docs/fr/plugins/loading#node-js-package-dependencies) pour un plugin en mode lien, donc imprimez un répertoire qui contient déjà les packages dont le plugin a besoin.

359* **Sessions démarrées à l'intérieur du répertoire** : une session démarrée dans le répertoire imprimé ou n'importe où en dessous ne charge pas le plugin.

360* **Pas sur Windows** : Claude Code refuse d'installer un plugin en mode lien sur Windows. Déclarez `"mode": "copy"` là.

361 

362<h2 id="marketplace-sources">

363 Sources marketplace

364</h2>

365 

366Une source marketplace indique où Claude Code récupère un `marketplace.json`. La CLI en crée une pour vous lorsque vous ajoutez une marketplace, et vous en écrivez une vous-même dans les paramètres :

367 

368* **[`claude plugin marketplace add`](/docs/fr/plugins/cli-reference)** : Claude Code crée la source à partir de la chaîne que vous passez.

369* **[`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces)** : vous écrivez la source vous-même en tant qu'objet `source`.

370* **[`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) et [`blockedMarketplaces`](/docs/fr/plugins/org#restrict-what-users-can-install)** : les administrateurs écrivent les sources dans ces deux listes de politique. `strictKnownMarketplaces` est la liste blanche et `blockedMarketplaces` est la liste noire.

371 

372Les noms de type `url`, `git` et `github` signifient quelque chose de différent dans une source marketplace que dans une [source de plugin](#plugin-sources) :

373 

374| Nom de type | En tant que source marketplace | En tant que source de plugin |

375| :---------- | :----------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------ |

376| `url` | Un lien direct vers un fichier `marketplace.json`, avec les champs `url`, `headers` et `headersHelper` | Un référentiel git à cloner, avec les champs `url`, `ref` et `sha` |

377| `git` | Un référentiel git à cloner, avec les champs `url`, `ref`, `path` et `sparsePaths` | N'existe pas |

378| `github` | Un référentiel GitHub, avec les champs `repo`, `ref`, `path` et `sparsePaths` | Un référentiel GitHub, avec les champs `repo`, `ref` et `sha`, et pas de `path` |

379 

380Le tableau liste chaque type de source marketplace avec ses champs, l'entrée `claude plugin marketplace add` qui le produit, et ce qu'il fait dans chacune des trois clés de paramètres.

381 

382| Type | Champs | Entrée `marketplace add` | `extraKnownMarketplaces` | `strictKnownMarketplaces` | `blockedMarketplaces` |

383| :------------ | :----------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------- |

384| `url` | `url`, `headers`, `headersHelper` | Une URL `http://` ou `https://` qui ne correspond pas à une forme git | Charge | Permet la même URL | Bloque la même URL |

385| `github` | `repo`, `ref`, `path`, `sparsePaths` | `owner/repo`, `owner/repo@ref` ou `owner/repo#ref` | Charge | Permet le même `repo`, `ref` et `path`. `repo` peut être `owner/*` | Bloque le même, et une URL `git` vers le même référentiel |

386| `git` | `url`, `ref`, `path`, `sparsePaths` | Une URL `user@host:path`, ou une URL `https://` qui se termine par `.git`, contient `/_git/`, ou nomme un référentiel github.com ou gitlab.com. `#ref` épingle un ref | Charge | Permet la même URL, `ref` et `path` | Bloque le même, et d'autres orthographes du même référentiel github.com |

387| `npm` | `package` | Non produit | Échoue à charger : `NPM marketplace sources not yet implemented` | Analyse mais ne correspond à rien, car rien n'enregistre une marketplace `npm` | Analyse mais ne correspond à rien |

388| `file` | `path` | Un chemin vers un fichier `.json` | Charge | Permet le même chemin | Bloque le même chemin |

389| `directory` | `path` | Un chemin vers un répertoire | Charge | Permet le même chemin | Bloque le même chemin |

390| `settings` | `name`, `plugins`, `owner` | Non produit | Charge | Permet une entrée avec le même `name` et des `plugins` identiques | Bloque le même `name` |

391| `skills-dir` | none | Non produit | Échoue à charger : `Unsupported marketplace source type` | Garde les [plugins du répertoire de compétences](/docs/fr/plugins/org#keep-skills-directory-plugins-loading) en cours de chargement tandis qu'une liste blanche est définie. Voir [Valeurs source valides uniquement dans les listes de politique](#source-values-valid-only-in-policy-lists) | Arrête les plugins du répertoire de compétences de charger |

392| `hostPattern` | `hostPattern` | Non produit | Échoue à charger : `Unsupported marketplace source type` | Permet les sources `github`, `git` et `url` dont l'hôte correspond | Bloque ces sources |

393| `pathPattern` | `pathPattern` | Non produit | Échoue à charger : `Unsupported marketplace source type` | Permet les sources `file` et `directory` dont le `path` correspond | Bloque ces sources |

394 

395<h3 id="fields-by-type">

396 Champs par type

397</h3>

398 

399Le tableau liste chaque champ de source marketplace qui a une valeur par défaut, une contrainte ou un sens spécifique à son type.

400 

401| Champ | Types | Description |

402| :-------------- | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

403| `url` | `url` | Lien vers le fichier `marketplace.json`. Claude Code télécharge uniquement ce fichier, donc les plugins de la marketplace ne peuvent pas utiliser les [sources avec chemin relatif](#relative-path-plugin-source) |

404| `url` | `git` | Le référentiel git à cloner |

405| `headers` | `url` | Mappage des en-têtes HTTP que Claude Code envoie avec la récupération, pour les hôtes authentifiés |

406| `headersHelper` | `url` | Commande qui imprime les en-têtes dont les valeurs sont trop éphémères pour être listées dans `headers`. Nécessite Claude Code v2.1.238 ou ultérieure. Voir [Authentifier les téléchargements d'archive](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) |

407| `repo` | `github` | Dans `marketplace add` et `extraKnownMarketplaces`, `repo` doit nommer un référentiel. `marketplace add` rejette `owner/*` comme n'étant pas un raccourci `owner/repo` valide ; dans `extraKnownMarketplaces` Claude Code le prend littéralement et le clone échoue |

408| `ref` | `github`, `git` | Branche ou balise. Par défaut, la branche par défaut du référentiel |

409| `path` | `github`, `git` | Le chemin du fichier marketplace à l'intérieur du référentiel. Par défaut `.claude-plugin/marketplace.json` |

410| `path` | `file` | Le fichier marketplace lui-même. Claude Code le lit sur place et prend le répertoire deux niveaux plus haut comme racine marketplace, donc gardez le fichier à `<root>/.claude-plugin/marketplace.json` |

411| `path` | `directory` | La racine marketplace, le répertoire qui contient `.claude-plugin/marketplace.json` |

412| `sparsePaths` | `github`, `git` | Tableau de répertoires pour un checkout clairsemé, tel que `[".claude-plugin", "plugins"]`. `claude plugin marketplace add --sparse` le définit |

413| `skipLfs` | `github`, `git` | Accepté et n'a aucun effet. Voir [Gardez les fichiers de plugin en dehors de Git LFS](/docs/fr/plugins/host-marketplace#keep-plugin-files-out-of-git-lfs) |

414| `name` | `settings` | Doit égaler la clé `extraKnownMarketplaces` et ne peut pas être un [nom réservé](#reserved-names) |

415| `plugins` | `settings` | Le catalogue en ligne, sans fichier hébergé. Chaque élément prend `name`, `source`, `description`, `version`, `strict`, `headers` et `headersHelper`. Écrivez la `source` de chaque élément en tant que type d'objet, car un chemin relatif n'a pas de référentiel pour se résoudre |

416 

417<h3 id="source-values-valid-only-in-policy-lists">

418 Valeurs source valides uniquement dans les listes de politique

419</h3>

420 

421`hostPattern`, `pathPattern`, `skills-dir` et la forme `owner/*` de `repo` sont valides uniquement dans les deux listes de politique, `strictKnownMarketplaces` et `blockedMarketplaces` :

422 

423* **`hostPattern` et `pathPattern`** : expressions régulières que Claude Code teste contre une source avant de la récupérer.

424* **`skills-dir`** : pas une source. Si vous définissez `strictKnownMarketplaces` du tout, les [plugins du répertoire de compétences](/docs/fr/plugins/org#keep-skills-directory-plugins-loading) cessent de charger jusqu'à ce que vous ajoutiez `{"source": "skills-dir"}` à cette liste.

425* **`owner/*`** : en tant que valeur `repo` `github`, correspond à chaque référentiel sous exactement ce propriétaire GitHub. Nécessite Claude Code v2.1.223 ou ultérieure.

426 

427Pour l'ordre de correspondance, la sémantique exacte de `ref` et les recettes, voir [Gérer les plugins pour votre organisation](/docs/fr/plugins/org).

428 

429<h3 id="source-objects-in-settings">

430 Objets source dans les paramètres

431</h3>

432 

433Une valeur `extraKnownMarketplaces` est un mappage du nom de marketplace à un objet avec `source`. Cette entrée enregistre une marketplace à partir d'un référentiel git à sa branche `main` :

434 

435```json theme={null}

436{

437 "extraKnownMarketplaces": {

438 "your-marketplace": {

439 "source": {

440 "source": "git",

441 "url": "https://git.example.com/your-org/your-marketplace.git",

442 "ref": "main"

443 }

444 }

445 }

446}

447```

448 

449`strictKnownMarketplaces` et `blockedMarketplaces` sont des tableaux d'objets source. Cette liste blanche admet un propriétaire GitHub et un hôte interne :

450 

451```json theme={null}

452{

453 "strictKnownMarketplaces": [

454 { "source": "github", "repo": "your-org/*" },

455 { "source": "hostPattern", "hostPattern": "^git\\.example\\.com$" }

456 ]

457}

458```

459 

460<h2 id="validation-messages">

461 Messages de validation

462</h2>

463 

464`claude plugin validate <path>` prend la racine marketplace ou le fichier marketplace lui-même. Il imprime les erreurs et les avertissements. Pour les codes de sortie et `--strict`, voir [plugin validate](/docs/fr/plugins/cli-reference#plugin-validate).

465 

466Un message nomme une entrée de plugin par son index, écrit comme `plugins.1.source` ou `plugins[1].source`.

467 

468Un message préfixé par un index d'entrée et `plugin.json →`, tel que `plugins[2] plugin.json →`, concerne les propres fichiers de ce plugin. [`claude plugin validate` signale les erreurs](/docs/fr/plugins/troubleshooting#claude-plugin-validate-reports-errors) liste ces messages avec leurs corrections.

469 

470Les avertissements qui mentionnent les noms de drapeaux Claude Desktop signalent les noms que Claude Code accepte mais que Claude Desktop rejette, car les règles de nom de Claude Desktop sont plus strictes.

471 

472Le tableau mappe les messages au niveau marketplace au champ dont chacun parle.

473 

474| Message | Niveau | Champ |

475| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------ |

476| `Marketplace must have a name` | Erreur | `name` est vide |

477| `Marketplace name cannot contain spaces. Use kebab-case (e.g., "my-marketplace")` | Erreur | `name` |

478| `Marketplace name cannot contain path separators (/ or \), ".." sequences, or be "."` | Erreur | `name` |

479| `Marketplace name impersonates an official Anthropic/Claude marketplace` | Erreur | `name`. Voir [Noms réservés](#reserved-names) |

480| `Marketplace name cannot contain control or bidirectional-formatting characters` | Erreur | `name` contient un caractère de contrôle, tel qu'une échappement ou une nouvelle ligne, ou un caractère de formatage bidirectionnel Unicode |

481| `Marketplace name "inline" is reserved for --plugin-dir session plugins`, et les variantes `builtin`, `skills-dir`, `synced`, `claude-plugin-test`, `npm`, `pip`, `uv`, `cargo`, `github` et `gh` | Erreur | `name` |

482| `Author name cannot be empty` | Erreur | `owner.name` |

483| `Plugin name cannot contain spaces. Use kebab-case (e.g., "my-plugin")` | Erreur | `plugins[i].name` |

484| `Plugin name cannot contain control or bidirectional-formatting characters` | Erreur | `plugins[i].name` |

485| `Duplicate plugin name "x" found in marketplace` | Erreur | Deux entrées partagent un `name` |

486| `plugins.i.source: Invalid input` | Erreur | La `source` de l'entrée ne correspond à aucun type. Voir [Entrée invalide sur une source](#invalid-input-on-a-source) |

487| `plugins[i].source: Path contains "..": <path>` | Erreur | Une `source` relative qui échappe à la racine marketplace |

488| `source.source: 'unsupported' is a parse-time placeholder and cannot be authored` | Erreur | `plugins[i].source` |

489| `Plugin "x" sets headersHelper but is not "strict": false` | Erreur | `plugins[i].headersHelper`, sur une entrée `archive` |

490| `chain does not resolve (<reason>) — target must be a name in plugins[], a key in renames, or null` | Erreur | `renames.<old>` |

491| `target "x" is not a valid plugin name (PluginIdSchema)` | Erreur | `renames.<old>` |

492| `Unknown field 'x'. Claude Code ignores it at load time.` | Avertissement | La clé nommée au niveau supérieur, sous `metadata`, dans une entrée, ou sous la `relevance` d'une entrée |

493| `Marketplace has no plugins defined` | Avertissement | `plugins` est vide |

494| `Plugin "x" sets headers/headersHelper, which only apply to "archive" sources; they have no effect on this entry.` | Avertissement | `plugins[i].headers` ou `plugins[i].headersHelper`, sur une entrée dont la `source` n'est pas `archive` |

495| `Plugin "x" fetches its archive with a headersHelper but sets no sha256 pin` | Avertissement | `plugins[i].source.sha256` |

496| `Header "x" is a request-routing/identity header that catalog entries may not set; Claude Code drops it at download time.` | Avertissement | `plugins[i].headers.<name>` |

497| `Local source "x" is or traverses a symlink, so <path> was not read` | Avertissement | `plugins[i].source` |

498| `No marketplace description provided. Adding a description helps users understand what this marketplace offers` | Avertissement | `description` |

499| `Entry declares version "x" but <path>/plugin.json says "y". At install time, plugin.json wins` | Avertissement | `plugins[i].version`, sur une entrée avec chemin relatif |

500| `'relevance' must be an object containing topic and signals; got <type>. It will be ignored at load time.` | Avertissement | `plugins[i].relevance` |

501| `'metadata' must be a free-form object; got <type>. It will be ignored at load time.` | Avertissement | `plugins[i].metadata` |

502| `'experimental' must be an object containing component declarations; got <type>. It will be ignored at load time.` | Avertissement | `plugins[i].experimental` |

503| `Marketplace name "x" is reserved in Claude Desktop` | Avertissement | `name` est `org`, `org-provisioned` ou `unknown`. Claude Desktop rejette la marketplace |

504| `Marketplace name "x" is not accepted by Claude Desktop (letters, digits, ".", "_", "-"; must start alphanumeric; max 128 chars)` | Avertissement | `name`. Claude Desktop rejette la marketplace |

505| `Plugin name "x" is not accepted by Claude Desktop (letters, digits, ".", "_", "-"; must start alphanumeric; max 128 chars)` | Avertissement | `plugins[i].name`. Claude Desktop supprime l'entrée |

506 

507<h3 id="invalid-input-on-a-source">

508 Entrée invalide sur une source

509</h3>

510 

511`Invalid input` sur une `source` signifie que l'objet ne correspondait à aucun type de source. Vérifiez ces causes :

512 

513* Un chemin relatif qui ne commence pas par `./`, autre que `"."` ou un [nom nu sous `metadata.pluginRoot`](#relative-path-plugin-source)

514* Un `package` `npm` contenant `..`

515* Un type `source` qui n'est pas l'un des [sources de plugin](#plugin-sources)

516* Un type connu avec un champ obligatoire manquant ou du mauvais type, tel que `github` sans `repo`

517 

518<h3 id="failures-that-validation-doesn’t-catch">

519 Défaillances que la validation ne détecte pas

520</h3>

521 

522`claude plugin validate` ne signale pas chaque défaillance. Un `hooks` d'entrée écrit comme un chemin de fichier ou un tableau passe la validation, et l'erreur n'apparaît que lorsque le plugin se charge, comme le décrit [Hooks dans une entrée](#hooks-in-an-entry). Les erreurs de récupération d'une `source` apparaissent également uniquement après l'installation, pas dans la validation.

523 

524[`claude plugin list`](/docs/fr/plugins/cli-reference) affiche un plugin qui n'a pas pu se charger avec son erreur, et [Dépanner les plugins](/docs/fr/plugins/troubleshooting) couvre les chaînes de temps de chargement.

525 

526<h2 id="next-steps">

527 Étapes suivantes

528</h2>

529 

530* [Créer une marketplace](/docs/fr/plugins/create-marketplace) : créez une marketplace à partir de ces champs et installez-la localement

531* [Héberger et maintenir une marketplace](/docs/fr/plugins/host-marketplace) : où mettre le fichier et comment les utilisateurs reçoivent les modifications

532* [Référence du manifeste de plugin](/docs/fr/plugins/manifest-reference) : les champs `plugin.json` qu'une entrée peut remplacer

533* [Gérer les plugins pour votre organisation](/docs/fr/plugins/org) : recettes de liste blanche et liste noire qui utilisent ces valeurs source

plugins/measure.md +193 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Mesurer le coût et l'utilisation d'un plugin

6 

7> Mesurez le coût en tokens d'un plugin Claude Code, découvrez si les gens l'utilisent toujours, et sélectionnez les événements de télémétrie pour les questions de plugins à l'échelle de l'organisation.

8 

9Chaque session où un plugin est activé inclut les noms et descriptions de ses skills, agents et commandes dans le contexte de Claude, et ces tokens comptent par rapport à l'utilisation de l'utilisateur, que le plugin soit utilisé ou non. Cette page montre comment voir ce nombre pour un plugin, comment le réduire si vous maintenez le plugin, et où l'utilisation s'affiche pour que vous puissiez dire si un plugin est toujours utilisé.

10 

11Cette page est destinée aux auteurs et mainteneurs de plugins. Si vous administrez Claude Code pour une organisation, [Mesurer sur une flotte](#measure-across-a-fleet) couvre les mêmes questions sur chaque machine.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Tester la fiabilité avec laquelle le plugin change le comportement de Claude** : voir [Tester les plugins avec des évaluations](/docs/fr/plugin-evals)

17 * **Réduire le contexte de votre propre session** : voir [Gérer les plugins installés](/docs/fr/plugins/install#manage-installed-plugins) et la page [fenêtre de contexte](/docs/fr/context-window)

18</Note>

19 

20Commencez par [Mesurer le coût d'un plugin](#measure-what-a-plugin-costs).

21 

22<h2 id="measure-what-a-plugin-costs">

23 Mesurer le coût d'un plugin

24</h2>

25 

26Pour voir ce qu'un plugin ajoute au contexte de Claude, exécutez [`claude plugin details`](/docs/fr/plugins/cli-reference#plugin-details) avec le nom du plugin. Vous l'exécutez dans votre shell, pas à l'invite d'une session Claude Code en cours d'exécution. Le plugin doit être chargé : installé, dans un répertoire de skills, ou passé avec `--plugin-dir` dans la même commande, comme dans `claude --plugin-dir ./formatter plugin details formatter`.

27 

28Cet exemple lit un plugin installé nommé `formatter` qui a deux skills, une commande, un agent, un hook et un serveur MCP :

29 

30```bash theme={null}

31claude plugin details formatter

32```

33 

34```text theme={null}

35formatter 1.0.0

36 Description: Formats and lints code on save

37 Source: formatter@my-marketplace

38 

39Component inventory

40 Skills (3) format-all, format-code, lint-fix

41 Agents (1) style-reviewer

42 Hooks (1) PostToolUse (harness-only — no model context cost)

43 MCP servers (1) formatter-tools (tool schemas resolved at runtime; not counted)

44 LSP servers (0)

45 

46Projected token cost

47 Always-on: ~146 tok added to every session

48 

49Per-component (rounded)

50 component always-on on-invoke

51 format-code ~40 ~30

52 lint-fix ~50 ~30

53 style-reviewer ~40 ~40

54 format-all < 20 ~30

55 

56 On-invoke cost is paid each time a skill or agent fires.

57 Token counts are estimates and may differ from actual usage.

58```

59 

60Chaque partie de la sortie répond à une question différente :

61 

62* **Component inventory** : ce que Claude Code a trouvé dans le plugin. Les commandes sont comptées avec les skills, donc `format-all` apparaît sous `Skills`. Les hooks et les serveurs MCP n'obtiennent pas d'estimation de coût et pas de ligne par composant ; pour voir ce que les outils MCP d'un plugin ajoutent, exécutez `/context` dans une session avec le plugin activé et lisez la catégorie `MCP tools`.

63* **Always-on** : les tokens que les noms et descriptions des skills, agents et commandes du plugin ajoutent à chaque session où le plugin est activé, que quelque chose s'exécute ou non. C'est le nombre que chaque utilisateur porte, et celui à réduire.

64* **Per-component** : chaque ligne divise un skill, agent ou commande en sa part always-on et son coût on-invoke, qui est le corps qui se charge uniquement quand ce composant s'exécute. Utilisez la colonne always-on pour trouver quel composant contribue le plus.

65 

66<h3 id="lower-the-always-on-figure">

67 Réduire le chiffre always-on

68</h3>

69 

70Si vous maintenez le plugin, ces modifications réduisent ce qu'il ajoute à chaque session. Si vous l'utilisez seulement, vos options sont de le désactiver ou de le désinstaller ; voir [Gérer les plugins installés](/docs/fr/plugins/install#manage-installed-plugins).

71 

72Le chiffre always-on compte le nom de chaque composant plus sa `description` et son frontmatter `when_to_use`. Pour le réduire :

73 

74* Raccourcissez les descriptions des skills et des agents.

75* Divisez un grand plugin pour que les utilisateurs n'installent que les composants dont ils ont besoin.

76 

77La description d'un skill est aussi ce que Claude fait correspondre à une demande, donc une description plus courte peut empêcher le skill de se déclencher. Après avoir réduit les descriptions, vérifiez le déclenchement avec un [grader `tool_used: Skill`](/docs/fr/plugin-evals#create-your-first-eval-suite) dans votre suite d'evals.

78 

79Pour ce que chaque type de composant contribue, voir [composants de plugin](/docs/fr/plugins/components).

80 

81<h3 id="cost-shown-to-users-before-install">

82 Coût affiché aux utilisateurs avant l'installation

83</h3>

84 

85Les plugins de la marketplace officielle affichent leur coût aux utilisateurs avant l'installation. Dans `/plugin`, quand un utilisateur parcourt la liste des plugins d'une marketplace et sélectionne un plugin, le volet de détails affiche une section **Context cost** avec une ligne `Every turn:` et une ligne `When invoked:`. Quand le chiffre always-on est de 2 000 tokens ou plus, la ligne `Every turn:` apparaît en surbrillance.

86 

87Un plugin dans votre propre marketplace n'a pas de section **Context cost**.

88 

89<h2 id="check-whether-a-plugin-is-used">

90 Vérifier si un plugin est utilisé

91</h2>

92 

93Claude Code ne signale pas l'utilisation d'un plugin à son auteur. L'utilisation est enregistrée sur la machine de chaque personne qui a installé le plugin, donc ce que vous pouvez apprendre dépend de votre relation avec ces personnes :

94 

95* **Vous administrez Claude Code pour leur organisation** : les événements OpenTelemetry et l'API Analytics comptent les installations et les activations de skills sur chaque machine. Voir [Mesurer sur une flotte](#measure-across-a-fleet).

96* **Ce sont des coéquipiers que vous pouvez demander** : le propre Claude Code de chaque utilisateur leur montre s'il utilise toujours le plugin, en quatre endroits : le [panneau `/plugin`](#not-used-recently-in-/plugin), [`/skill-doctor`](#find-skills-that-never-run), [`/doctor`](#unused-plugins-in-/doctor), et [`/usage`](#usage-share-in-/usage). Les quatre sont des commandes que l'utilisateur exécute à l'invite Claude Code dans une session sur sa propre machine.

97* **Aucun des deux** : vous n'avez aucun signal d'utilisation de Claude Code pour ce plugin.

98 

99<h3 id="not-used-recently-in-/plugin">

100 Non utilisé récemment dans `/plugin`

101</h3>

102 

103Sur l'onglet **Installed** de `/plugin`, un plugin que l'utilisateur a installé à partir d'une marketplace se déplace sous un en-tête **Not used recently** une fois qu'il n'a pas été utilisé pendant au moins 14 jours et 10 sessions. Les détails du plugin affichent également une ligne `Last used:`. Pour ce que les utilisateurs font avec cet en-tête et cette ligne, voir [Trouver les plugins que vous n'utilisez plus](/docs/fr/plugins/install#find-plugins-you-no-longer-use).

104 

105L'en-tête **Not used recently** n'apparaît jamais pour :

106 

107* Les plugins chargés avec `--plugin-dir` ou à partir d'un répertoire de skills

108* Les plugins activés via les paramètres gérés, ou montés à partir d'un [répertoire seed](/docs/fr/plugins/org#seed-containers-and-ci)

109* Les plugins qui incluent un thème, un style de sortie, un moniteur ou un workflow, car ceux-ci sont en cours d'utilisation sans invocation suivie

110 

111Le [serveur de langage](/docs/fr/plugins/components#lsp-servers) d'un plugin est compté comme utilisé quand il fournit des diagnostics ou répond à une demande de navigation de code, donc un plugin LSP dont le serveur est actif dans vos sessions n'est pas listé comme inutilisé.

112 

113Quand l'organisation de l'utilisateur définit [`strictKnownMarketplaces`](/docs/fr/plugins/org#restrict-what-users-can-install), ni l'en-tête ni la ligne `Last used:` n'apparaissent.

114 

115<h3 id="find-skills-that-never-run">

116 Trouver les skills qui ne s'exécutent jamais

117</h3>

118 

119Exécutez `/skill-doctor` pour voir ce que chacun de vos skills coûte et à quelle fréquence il est utilisé. Il signale les skills qui sont dans la liste des skills de Claude mais qui n'ont jamais été invoqués, y compris les skills des plugins.

120 

121Dans une session interactive, le rapport s'ouvre dans l'onglet **Stats** du gestionnaire `/plugin`. Voir [Trouver les skills inutilisés](/docs/fr/skills#find-unused-skills) pour ce que le rapport couvre et où il est disponible.

122 

123<h3 id="unused-plugins-in-/doctor">

124 Plugins inutilisés dans `/doctor`

125</h3>

126 

127La vérification `/doctor` liste chaque skill installé par l'utilisateur, serveur MCP et plugin, et recommande de désactiver ceux qui n'ont pas été utilisés. Voir [`/doctor` dans la référence des commandes](/docs/fr/commands#all-commands).

128 

129<h3 id="usage-share-in-/usage">

130 Partage d'utilisation dans `/usage`

131</h3>

132 

133Sur un plan Pro, Max, Team ou Enterprise, la ventilation `/usage` attribue l'utilisation récente aux skills, subagents, plugins et serveurs MCP en tant que part du total. Voir [Utiliser la commande `/usage`](/docs/fr/costs#using-the-/usage-command).

134 

135<h2 id="measure-across-a-fleet">

136 Mesurer sur une flotte

137</h2>

138 

139Si vous administrez Claude Code pour une organisation, vous pouvez mesurer le coût et l'utilisation des plugins sur chaque machine à partir de l'une de ces sources :

140 

141* **Événements OpenTelemetry** : Claude Code les exporte vers votre propre backend une fois que vous [configurez un exportateur](/docs/fr/monitoring-usage). Voir [Événements OpenTelemetry pour les installations et l'utilisation des plugins](#pick-the-opentelemetry-event-for-each-question).

142* **API Analytics** : servie à partir des enregistrements d'Anthropic, sans exportateur nécessaire. Voir [Interroger l'API Analytics](#query-the-analytics-api).

143 

144<h3 id="pick-the-opentelemetry-event-for-each-question">

145 Événements OpenTelemetry pour les installations et l'utilisation des plugins

146</h3>

147 

148Ces événements OpenTelemetry et attributs répondent à chaque question de plugin depuis votre backend :

149 

150| Question | Événement ou attribut OpenTelemetry |

151| :------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

152| Quels plugins sont installés et d'où | [`claude_code.plugin_installed`](/docs/fr/monitoring-usage#plugin-installed-event), un par installation |

153| Quels plugins sont actifs dans combien de sessions | [`claude_code.plugin_loaded`](/docs/fr/monitoring-usage#plugin-loaded-event), un par plugin activé au démarrage de la session |

154| Quels skills s'activent et quel plugin les possède | [`claude_code.skill_activated`](/docs/fr/monitoring-usage#skill-activated-event), avec `plugin.name` et `marketplace.name` pour les skills de plugin |

155| Ce qu'un hook de plugin signale | [`claude_code.hook_plugin_metrics`](/docs/fr/monitoring-usage#hook-plugin-metrics-event), émis uniquement pour les hooks dans les plugins de la marketplace officielle |

156| Ce qu'un plugin coûte en dépenses API | `plugin.name` et `marketplace.name` sur le [compteur de coûts](/docs/fr/monitoring-usage#cost-counter), défini quand le skill actif ou le subagent appartient à un plugin |

157 

158<h3 id="redacted-plugin-names-in-your-backend">

159 Noms de plugins masqués dans votre backend

160</h3>

161 

162Les plugins de la marketplace officielle signalent leur nom de plugin et leur nom de marketplace à votre backend littéralement. Tous les autres noms de plugins sont masqués ou omis par défaut, y compris un plugin de la propre marketplace de votre organisation. Le [niveau de confiance](/docs/fr/plugins/security#find-plugins-in-telemetry) du plugin décide lequel.

163 

164Pour obtenir des noms réels sur certains événements, définissez la variable d'environnement [`OTEL_LOG_TOOL_DETAILS`](/docs/fr/monitoring-usage#common-configuration-variables) à `1` sur les machines qui exportent la télémétrie, par exemple dans le bloc `env` des mêmes [paramètres gérés](/docs/fr/monitoring-usage#administrator-configuration) qui configurent l'exportateur :

165 

166| Événement | Par défaut | Avec `OTEL_LOG_TOOL_DETAILS=1` |

167| :------------------------------------ | :------------------------------------------------------------------------------------------------ | :------------------------------------------------------ |

168| `plugin_loaded` | `plugin.name` et `marketplace.name` sont la chaîne littérale `third-party` | Noms réels |

169| `plugin_installed`, `skill_activated` | `plugin.name` et `marketplace.name` omis ; sur `skill_activated`, `skill.name` est `custom_skill` | Noms réels |

170| Compteur de coûts | `plugin.name` est `third-party` ; `marketplace.name` absent | `plugin.name` réel ; `marketplace.name` toujours absent |

171 

172Sur `plugin_loaded`, `plugin_id_hash` identifie toujours chaque plugin par défaut, vous pouvez donc compter les plugins tiers distincts.

173 

174<h3 id="query-the-analytics-api">

175 Interroger l'API Analytics

176</h3>

177 

178Sur le plan Enterprise, l'API Analytics répond à « quels plugins mon organisation installe et invoque » à partir des enregistrements d'Anthropic, sans exportateur nécessaire. [`GET /v1/organizations/analytics/plugins`](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list) retourne les comptages d'installation et d'invocation par plugin, par jour, sur Claude Code et Cowork, que vous pouvez regrouper par utilisateur, groupe RBAC ou produit.

179 

180L'activité des plugins qui atteint Anthropic sans nom de plugin apparaît dans une ligne `third-party` agrégée. [Trouver les plugins dans la télémétrie](/docs/fr/plugins/security#find-plugins-in-telemetry) dit quels plugins Claude Code signale par nom.

181 

182Authentifiez la demande avec une clé API qui a la portée `read:analytics`, qu'un propriétaire principal crée comme décrit sous [Accéder aux données par programmation](/docs/fr/analytics#access-data-programmatically).

183 

184Voir la [référence du point de terminaison](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list) pour les paramètres et les champs de réponse.

185 

186<h2 id="next-steps">

187 Étapes suivantes

188</h2>

189 

190* [Tester les plugins avec des evals](/docs/fr/plugin-evals) : mesurez la fiabilité avec laquelle le plugin oriente Claude, pas seulement ce qu'il coûte

191* [Réduire le chiffre always-on](#lower-the-always-on-figure) : ce qu'il faut changer dans le plugin pour réduire son coût par tour

192* [Sécurité et confiance des plugins](/docs/fr/plugins/security#find-plugins-in-telemetry) : quels champs de télémétrie portent les noms de plugins et quand ils sont masqués

193* [Surveillance de l'utilisation](/docs/fr/monitoring-usage) : la référence complète des événements OpenTelemetry

plugins/org.md +460 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Gérer les plugins Claude Code pour votre organisation

6 

7> Contrôlez les plugins que Claude Code installe et autorise sur chaque machine de votre organisation via des paramètres gérés.

8 

9Les paramètres gérés vous permettent de décider quels plugins Claude Code installe et autorise sur chaque machine de votre organisation. Les utilisateurs ne peuvent pas les remplacer. Vous les livrez soit sous forme de [paramètres gérés par le serveur](/docs/fr/server-managed-settings) depuis la console d'administration claude.ai, soit sous forme de paramètres gérés par le point de terminaison via MDM ou un fichier `managed-settings.json`. La plupart des contrôles de cette page ne prennent effet que depuis les paramètres gérés.

10 

11Cette page est destinée aux administrateurs et les paramètres ici gouvernent Claude Code.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Installation de plugins pour vous-même** : commencez par [Installer des plugins](/docs/fr/plugins/install)

17 * **Contrôler les plugins que les membres peuvent utiliser dans claude.ai et Cowork** : voir [Gérer les plugins pour votre organisation](https://support.claude.com/en/articles/13837433) dans le centre d'aide

18 * **La page des plugins dans les paramètres d'administration de claude.ai** : [**Paramètres de l'organisation > Plugins et compétences**](https://claude.ai/admin-settings/skills?tab=inventory) active les plugins pour les comptes claude.ai des membres, et ceux-ci atteignent Claude Code sous forme de [plugins synchronisés](/docs/fr/plugins/loading#synced-plugins). Il ne définit aucune des clés de cette page

19</Note>

20 

21Les sections suivent l'ordre que prennent la plupart des déploiements : [exiger des plugins](#pre-install-and-require-plugins) pour tout le monde ou par référentiel, [ensemencer les conteneurs et l'IC](#seed-containers-and-ci), [restreindre](#restrict-what-users-can-install) ce que les utilisateurs peuvent ajouter eux-mêmes, [définir la politique de mise à jour](#set-update-policy), puis [auditer](#audit-and-review) ce qui est installé. Pour examiner chaque clé de politique en un seul endroit, voir la [matrice de contrôle](#control-matrix).

22 

23<h2 id="pre-install-and-require-plugins">

24 Pré-installer et exiger des plugins

25</h2>

26 

27Un marketplace est un catalogue de plugins que Claude Code récupère à partir d'un référentiel git, d'une URL ou d'un chemin local. Une fois que vous enregistrez un marketplace sur une machine, Claude Code peut installer des plugins à partir de celui-ci.

28 

29Pour installer des plugins pour une flotte, définissez deux clés ensemble dans les [paramètres gérés](/docs/fr/managed-settings), le fichier de politique ou la politique livrée par le serveur que chaque machine de votre organisation lit : `extraKnownMarketplaces` enregistre un marketplace sur chaque machine, et `enabledPlugins` nomme les plugins à installer et activer à partir de celui-ci. [Choisir un mécanisme de livraison](#choose-a-delivery-mechanism) couvre comment les paramètres gérés atteignent chaque machine.

30 

31<h3 id="choose-a-delivery-mechanism">

32 Choisir un mécanisme de livraison

33</h3>

34 

35Les paramètres gérés atteignent une machine via l'un de trois mécanismes de livraison :

36 

37* **Paramètres gérés par le serveur** : définissez les clés de plugin en JSON à [**Paramètres de l'organisation > Claude Code > Paramètres gérés**](https://claude.ai/admin-settings/claude-code). Nécessite un [rôle Propriétaire](/docs/fr/server-managed-settings#access-control) dans votre organisation Claude. Une session cloud récupère ces paramètres avant d'installer les plugins.

38* **Politiques MDM** : sur macOS, livrez un plist dont les clés de niveau supérieur sont les clés de paramètres. Sur Windows, stockez l'ensemble du document JSON en tant que chaîne dans une valeur de registre. Le domaine plist et la clé de registre se trouvent dans [Où chaque mécanisme stocke la politique](/docs/fr/managed-settings#where-each-mechanism-stores-the-policy).

39* **Fichier de paramètres gérés** : placez un `managed-settings.json` au chemin système de la plateforme. Vous pouvez également ajouter des fichiers au répertoire drop-in `managed-settings.d/` à côté de celui-ci. Les chemins de fichier par plateforme se trouvent dans [Où chaque mécanisme stocke la politique](/docs/fr/managed-settings#where-each-mechanism-stores-the-policy), et les règles de fusion drop-in se trouvent dans [Diviser une politique basée sur fichier entre les équipes](/docs/fr/managed-settings#split-a-file-based-policy-across-teams).

40 

41Utilisez les paramètres gérés par le serveur si vous avez une organisation Claude for Teams ou Enterprise sur claude.ai et que vos appareils ne sont pas tous sous MDM. Sinon, utilisez une politique MDM ou le fichier de paramètres gérés. Pour le compromis, voir [Choisir entre les paramètres gérés par le serveur et gérés par le point de terminaison](/docs/fr/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings).

42 

43<h4 id="which-managed-source-applies-on-a-machine">

44 Quelle source gérée s'applique sur une machine

45</h4>

46 

47Par défaut, une seule de ces trois sources s'applique sur une machine. Claude Code utilise la première qui livre une clé de politique, en vérifiant d'abord les paramètres gérés par le serveur, puis les politiques MDM, puis le fichier de paramètres gérés. Si les paramètres gérés par le serveur livrent même une seule clé non liée, Claude Code ignore les clés de plugin dans une politique MDM ou un fichier de paramètres gérés sur cette machine, à l'exception des [clés qu'il lit à partir de chaque source](/docs/fr/managed-settings#keys-read-from-every-admin-source).

48 

49Pour appliquer chaque source à la place, définissez [`managedSourcesBehavior`](/docs/fr/managed-settings#compose-every-managed-source) sur `"merge"`.

50 

51[Comment Claude Code combine les sources gérées](/docs/fr/managed-settings#how-claude-code-combines-managed-sources) liste également les clés que Claude Code lit à partir de chaque source dans les deux modes.

52 

53<h3 id="require-a-marketplace-and-its-plugins">

54 Exiger un marketplace et ses plugins

55</h3>

56 

57Ajoutez le marketplace sous `extraKnownMarketplaces`, indexé par le `name` propre du marketplace à partir de son `marketplace.json`. Ensuite, ajoutez chaque plugin sous `enabledPlugins` en tant que `plugin-name@marketplace-name`. Chaque entrée de marketplace porte un objet `source` avec un champ `source` nommant le type, tel que `github`. Cet exemple de paramètres gérés enregistre un marketplace d'organisation et force-active deux plugins à partir de celui-ci :

58 

59```json theme={null}

60{

61 "extraKnownMarketplaces": {

62 "your-marketplace": {

63 "source": { "source": "github", "repo": "your-org/your-marketplace" },

64 "autoUpdate": true

65 }

66 },

67 "enabledPlugins": {

68 "code-formatter@your-marketplace": true,

69 "deploy-helper@your-marketplace": true

70 }

71}

72```

73 

74Une fois que les paramètres atteignent une machine, Claude Code enregistre le marketplace et installe les deux plugins au début de la session suivante de l'utilisateur. Les utilisateurs les voient dans `/plugin`, et désactiver l'un à leur propre portée ne l'empêche pas de se charger, car les paramètres gérés ont la priorité sur chaque autre portée.

75 

76Pour bloquer un plugin à chaque portée et le masquer de la liste du marketplace, définissez-le sur `false` dans le `enabledPlugins` géré à la place.

77 

78Ajustez les champs `autoUpdate` et `source` pour votre marketplace :

79 

80* **`autoUpdate`** : `true` garde le marketplace et ses plugins en actualisation en arrière-plan, et `false` désactive cela. Voir [Définir la politique de mise à jour](#set-update-policy).

81* **`source`** : `github` est l'un de plusieurs types de sources. Une source `git` prend une `url` pour GitLab ou un hôte interne, et une source `url` prend l'adresse d'un `marketplace.json` hébergé. Chaque forme de source se trouve dans la [référence du marketplace](/docs/fr/plugins/marketplace-reference).

82 

83Si le marketplace est un référentiel git privé, chaque utilisateur a besoin d'un accès en lecture à celui-ci. Le clone d'un marketplace basé sur git s'exécute avec git sur la machine de l'utilisateur, en utilisant les identifiants stockés et sans invites. Pour les utilisateurs sans comptes d'hôte git, utilisez un [seed](#seed-containers-and-ci) à la place.

84 

85Une entrée gérée remplace également une entrée de marketplace de même nom ou une copie `--plugin-dir` d'une autre source :

86 

87* **Marketplaces** : une entrée de marketplace gérée remplace une entrée de priorité inférieure du même nom, et les champs des deux entrées ne fusionnent pas.

88* **Copies `--plugin-dir`** : `--plugin-dir` charge un plugin à partir d'un répertoire local pour une session. Pour ce qui se passe quand le nom de cette copie correspond à un plugin que votre `enabledPlugins` géré nomme, voir [Conflits de noms](/docs/fr/plugins/loading#name-conflicts).

89 

90Le marketplace officiel d'Anthropic `claude-plugins-official` n'a besoin d'aucune entrée `extraKnownMarketplaces` quand `enabledPlugins` définit l'un de ses plugins sur `true`. Cette entrée `name@claude-plugins-official` déclare le marketplace par elle-même, partout où ces clés s'appliquent. Si vous n'activez aucun de ses plugins et souhaitez toujours qu'il soit enregistré sur chaque machine, donnez-lui une entrée explicite, comme [Autoriser le marketplace officiel et le vôtre](#allow-the-official-marketplace-and-your-own) le fait.

91 

92<h3 id="require-plugins-per-repository">

93 Exiger des plugins par référentiel

94</h3>

95 

96Pour couvrir les contributeurs d'un seul référentiel au lieu de votre flotte entière, définissez `extraKnownMarketplaces` et `enabledPlugins` dans le `.claude/settings.json` de ce référentiel. Les entrées `extraKnownMarketplaces` s'appliquent uniquement dans un dossier que le contributeur a approuvé, et dans un dossier non approuvé Claude Code les ignore sans message :

97 

98* **Sessions interactives** : Claude Code enregistre le marketplace uniquement après que le contributeur accepte la [boîte de dialogue de confiance de l'espace de travail](/docs/fr/permissions#what-runs-before-you-trust-a-folder) pour ce dossier.

99* **[Exécutions non interactives `-p`](/docs/fr/headless)** : les entrées s'appliquent uniquement dans un dossier dont la confiance que l'utilisateur a déjà acceptée de manière interactive, ou dont vous définissez l'indicateur `hasTrustDialogAccepted` dans `~/.claude.json`.

100 

101Un plugin que le marketplace liste par un chemin relatif se charge à partir de la copie du marketplace une fois que les entrées `extraKnownMarketplaces` du référentiel s'appliquent. Un plugin dont l'entrée de marketplace pointe vers une source externe à la place, comme le référentiel GitHub propre du plugin, ne s'installe pas à partir des paramètres du référentiel seuls. Chaque contributeur voit `Plugin "<name>" is enabled in project settings but isn't installed` jusqu'à ce qu'il exécute `claude plugin install <name>@<marketplace> --scope project`, comme [Installer des plugins](/docs/fr/plugins/install) le décrit.

102 

103Si vous utilisez une source `directory` ou `file` locale avec un chemin relatif, le chemin se résout par rapport au checkout principal de votre référentiel. Quand vous exécutez Claude Code à partir d'une git worktree, le chemin pointe toujours vers le checkout principal, donc tous les worktrees partagent le même emplacement de marketplace.

104 

105Pour déployer un ensemble de plugins avec des dépendances, mettez le plugin d'ensemble dans `enabledPlugins`, comme [Dépendances des plugins](/docs/fr/plugins/dependencies) le décrit.

106 

107<h3 id="when-each-surface-applies-the-plugin-keys">

108 Quand chaque surface applique les clés de plugin

109</h3>

110 

111Le tableau montre quand chaque type de session Claude Code applique `extraKnownMarketplaces` et `enabledPlugins`, à partir des paramètres gérés et du `.claude/settings.json` d'un référentiel. Pour l'application Desktop et les extensions IDE, voir [Installer un plugin](/docs/fr/plugins/install#install-a-plugin).

112 

113| Surface | `extraKnownMarketplaces` et `enabledPlugins` gérés | `.claude/settings.json` du référentiel |

114| :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------- |

115| Terminal, interactif | Appliqué au démarrage de la session sur chaque machine qui reçoit les paramètres | `extraKnownMarketplaces` appliqué après la confiance ; `enabledPlugins` appliqué au démarrage de la session |

116| `-p` et IC | Appliqué au démarrage de la session, avec les installations s'exécutant en arrière-plan | `extraKnownMarketplaces` dans les dossiers approuvés uniquement ; `enabledPlugins` appliqué |

117| Sessions cloud | Dans un environnement hébergé par Anthropic, seuls les paramètres gérés par le serveur atteignent la session, qui les attend avant d'installer les plugins. Les politiques MDM et les fichiers de paramètres gérés restent sur la machine de l'utilisateur. Pour un environnement auto-hébergé, voir [Où et quand une politique s'applique](/docs/fr/managed-settings#where-and-when-a-policy-applies) | Voir l'onglet **Session cloud** sous [Installer un plugin](/docs/fr/plugins/install#install-a-plugin) |

118 

119Dans une exécution `-p` ou IC, les marketplaces et les plugins s'installent en arrière-plan, donc un plugin peut manquer du premier tour. Définissez `CLAUDE_CODE_SYNC_PLUGIN_INSTALL=1` pour faire attendre l'exécution à l'installation avant sa première requête.

120 

121<h3 id="confirm-the-rollout">

122 Confirmer le déploiement

123</h3>

124 

125Vérifiez que le marketplace et les plugins sont arrivés sur une machine ou dans une exécution IC :

126 

127* **Sur une machine** : démarrez Claude Code et exécutez `/plugin`. Le marketplace et les plugins sont listés.

128* **En IC** : exécutez `claude -p` avec `--output-format stream-json --verbose`. L'événement `init` liste les plugins chargés sous `plugins`.

129 

130<h2 id="seed-containers-and-ci">

131 Ensemencer les conteneurs et l'IC

132</h2>

133 

134Pour les images de conteneur et les exécuteurs IC qui ne peuvent pas cloner au moment de l'exécution, pré-remplissez un répertoire de plugins au moment de la construction et pointez `CLAUDE_CODE_PLUGIN_SEED_DIR` vers celui-ci. Claude Code enregistre les marketplaces du seed au démarrage et charge les caches de plugins à partir du seed en place, sans cloner.

135 

136Un seed sert également les utilisateurs qui n'ont pas de compte d'hôte git.

137 

138<Note>

139 Dans les environnements IC/CD, configurez un assistant d'identifiants git avant d'installer des plugins à partir de référentiels privés. Sur GitHub Actions, exportez un jeton avec accès en lecture au référentiel du marketplace en tant que `GH_TOKEN`, puis exécutez `gh auth setup-git`. Le jeton de flux de travail par défaut ne peut accéder qu'au référentiel du flux de travail lui-même, donc un marketplace privé dans un autre référentiel a besoin d'un jeton d'accès personnel ou d'un jeton d'application.

140</Note>

141 

142<Steps>

143 <Step title="Installer dans le seed au moment de la construction">

144 Définissez `CLAUDE_CODE_PLUGIN_CACHE_DIR` sur le chemin du seed pour que le marketplace et les plugins s'installent là à la place de `~/.claude/plugins` :

145 

146 ```bash theme={null}

147 CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/your-marketplace

148 CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install code-formatter@your-marketplace

149 ```

150 

151 Le seed a la même disposition que `~/.claude/plugins` : `known_marketplaces.json`, `marketplaces/<name>/`, et `cache/<marketplace>/<plugin>/<version>/`. Vous pouvez monter le seed à un chemin différent de celui où vous l'avez construit.

152 </Step>

153 

154 <Step title="Pointer l'exécution vers le seed">

155 Définissez `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` dans l'environnement du conteneur. Pour utiliser plusieurs seeds, séparez leurs chemins avec `:` sur Unix ou `;` sur Windows. Claude Code utilise le premier seed qui contient un marketplace ou un cache de plugin donné.

156 </Step>

157 

158 <Step title="Activer les plugins">

159 Les plugins dans un seed ne sont pas activés d'eux-mêmes. Définissez `enabledPlugins` pour chaque plugin de seed que vous souhaitez charger, dans les paramètres gérés ou dans le `.claude/settings.json` du référentiel.

160 </Step>

161</Steps>

162 

163Pour vérifier un seed, exécutez `claude -p` avec `--output-format stream-json --verbose` dans l'image. Dans la liste `plugins` de l'événement `init`, le `path` de chaque plugin chargé se trouve sous le seed, tel que `/opt/claude-seed/cache/your-marketplace/code-formatter/1.0.0`.

164 

165Les marketplaces de seed suivent ces règles :

166 

167* **Lecture seule** : Claude Code n'écrit jamais dans le seed et force `autoUpdate` à off pour les marketplaces de seed.

168* **Les entrées de seed ont la priorité** : à chaque démarrage, un marketplace déclaré dans le seed remplace l'entrée de l'utilisateur du même nom. Les utilisateurs se désabonnent d'un plugin de seed avec `claude plugin disable`, pas en supprimant le marketplace.

169* **La mise à jour et la suppression échouent** : `claude plugin marketplace update <name>` et `remove` sans `--scope` sur un marketplace de seed échouent avec un message qui nomme le répertoire du seed.

170* **La politique s'applique toujours** : la [liste blanche et la liste noire](#restrict-what-users-can-install) vérifient également la source enregistrée d'un marketplace de seed. Autorisez la source à partir de laquelle vous avez construit le seed.

171 

172Pour les flottes sans accès git sortant, combinez un seed avec des sources de marketplace `directory` ou `file` sur un montage partagé. Définissez également `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`, qui désactive également la [mise à jour automatique des plugins](/docs/fr/plugins/loading#when-auto-update-runs). Si un proxy est disponible, voir [Configuration du proxy](/docs/fr/network-config#proxy-configuration) pour les variables à définir.

173 

174<h2 id="restrict-what-users-can-install">

175 Restreindre ce que les utilisateurs peuvent installer

176</h2>

177 

178La liste blanche gérée `strictKnownMarketplaces` et la liste noire `blockedMarketplaces` décident quelles sources de marketplace les plugins peuvent provenir. La source d'un marketplace est le référentiel git, l'URL ou le chemin local que Claude Code récupère. Les deux listes correspondent à la source du marketplace d'où provient un plugin, pas à l'entrée propre du plugin à l'intérieur de ce marketplace.

179 

180Pour le verrouillage courant, qui autorise le marketplace officiel et le vôtre, voir [Autoriser le marketplace officiel et le vôtre](#allow-the-official-marketplace-and-your-own). Associez-le à [`disableSideloadFlags`](#control-matrix) pour que les utilisateurs ne puissent pas charger les plugins à partir d'un répertoire local ou d'une URL non plus.

181 

182Les deux listes s'appliquent avant tout téléchargement et à nouveau au démarrage de la session :

183 

184* **Avant un téléchargement** : les listes s'appliquent quand un utilisateur ajoute un marketplace et à chaque installation, mise à jour, actualisation et mise à jour automatique.

185* **Au démarrage de la session** : les listes s'appliquent à nouveau aux plugins déjà installés, donc un plugin installé dont la source du marketplace ne correspond plus ne se charge pas. `/plugin` le liste avec `Marketplace "<name>" is not in the allowed marketplace list` ou `Marketplace "<name>" is blocked by enterprise policy`.

186 

187L'endroit où les deux listes sont appliquées dépend de l'endroit où vous les définissez :

188 

189* **La console d'administration claude.ai** : Claude Code applique les deux listes dans les sessions qui [lisent les paramètres gérés par le serveur](/docs/fr/managed-settings#where-and-when-a-policy-applies). claude.ai les vérifie également quand quelqu'un dans votre organisation ajoute un nouveau marketplace à partir d'un référentiel git sur claude.ai, ou à partir de **Personnaliser** dans l'application Claude Desktop en dehors de son onglet Code. Cela couvre un marketplace qu'un membre ajoute pour son propre compte et un ajouté pour toute l'organisation sous [**Paramètres de l'organisation > Plugins**](https://claude.ai/admin-settings/plugins). claude.ai refuse un référentiel que la liste blanche n'admet pas ou que la liste noire nomme. Il ne re-vérifie pas un marketplace qui a été ajouté dans l'un ou l'autre endroit avant que vous définissiez les listes, et il ne vérifie pas les plugins téléchargés.

190* **Un fichier de paramètres gérés, une politique au niveau du système d'exploitation ou une autre source gérée** : Claude Code applique les deux listes où il lit cette source. claude.ai ne la lit pas.

191 

192Tant qu'une liste blanche est définie, ou qu'une liste noire nomme une source autre que [`skills-dir`](#blocklist-with-blockedmarketplaces), un plugin dont Claude Code ne peut pas trouver le marketplace ne se charge pas. `/plugin` affiche l'erreur de politique pour celui-ci plutôt qu'une erreur de non-trouvé. Le cas courant est une entrée `enabledPlugins` obsolète pour un marketplace que personne n'a enregistré.

193 

194<h3 id="control-matrix">

195 Matrice de contrôle

196</h3>

197 

198Le tableau liste chaque clé de politique de plugin, ce qu'elle applique et ce qu'elle ne peut pas faire.

199 

200| Clé | Ce qu'elle applique | Ce qu'elle ne peut pas faire |

201| :----------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

202| `strictKnownMarketplaces` | Liste blanche des sources de marketplace. `[]` bloque chaque source, y compris le marketplace officiel. Alias : `allowedMarketplaces` | N'enregistre pas un marketplace, ne restreint pas les entrées à l'intérieur d'un marketplace autorisé, ou ne bloque pas `--plugin-dir` |

203| `blockedMarketplaces` | Liste noire des sources de marketplace, vérifiée avant la liste blanche | Ne bloque pas un marketplace déjà enregistré à partir d'une source qu'il ne correspond pas |

204| `syncClaudeAiPlugins` | Définissez `false` pour arrêter Claude Code de télécharger et charger les plugins [synchronisés à partir de claude.ai](/docs/fr/plugins/loading#synced-plugins) pour le compte de chaque utilisateur. Nécessite Claude Code v2.1.273 ou ultérieur | N'éteint pas un plugin synchronisé. Pour cela, définissez `"<name>@synced": false` dans [`enabledPlugins`](/docs/fr/settings-reference#enabledplugins) |

205| `enabledPlugins` | `true` force-active, `false` bloque à chaque portée et masque le plugin | N'installe pas un plugin dont le marketplace n'est pas enregistré ou autorisé |

206| `disableSideloadFlags` | Rejette `--plugin-dir`, `--plugin-url`, `--agents`, l'option `plugins` du SDK Agent, et `--mcp-config` non-SDK au démarrage, et rejette les dossiers nommés dans la variable [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/fr/env-vars#variables) de la même manière | Ne restreint pas `.mcp.json`, `claude mcp add`, ou les serveurs fournis par SDK. Associez-le à [`allowedMcpServers`](/docs/fr/managed-mcp) |

207| `disableCommandPluginSources` | Bloque les plugins avec une source `command` de l'installation, de la mise à jour ou du chargement. Une source `command` est celle dont le répertoire de plugins est produit en exécutant une commande sur la machine. Quand non défini, il prend la valeur de `allowManagedHooksOnly` | N'affecte pas les autres types de sources |

208| `allowManagedHooksOnly` | Restreint les hooks qui s'exécutent. Voir [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) | Ne fait confiance pas aux hooks des plugins que les utilisateurs activent eux-mêmes |

209| `strictPluginOnlyCustomization` | Bloque les compétences, les agents, les hooks et les serveurs MCP qui ne proviennent pas d'un plugin, des paramètres gérés ou des éléments intégrés de Claude Code. Définissez `true` pour couvrir les quatre types, ou un tableau de valeurs `skills`, `agents`, `hooks` et `mcp` telles que `["skills", "hooks"]` pour en couvrir certains | Ne restreint pas les plugins que les utilisateurs installent. Associez-le à `strictKnownMarketplaces` |

210| `pluginSuggestionMarketplaces` | Marketplaces dont les plugins peuvent apparaître comme suggestions d'installation. Voir [Recommander des plugins](#recommend-plugins) | N'affecte pas les conseils intégrés |

211| `pluginTrustMessage` | Ajoute votre texte à l'avertissement de confiance que `/plugin` affiche avant l'installation d'un plugin | Ne change pas le texte de l'avertissement lui-même |

212| `allowedChannelPlugins` | Remplace la liste par défaut des plugins autorisés à envoyer des messages de canal. Nécessite `channelsEnabled: true` | Voir [Restreindre les plugins de canal qui peuvent s'exécuter](/docs/fr/channels#restrict-which-channel-plugins-can-run) |

213| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](/docs/fr/env-vars) | Arrête les sessions de terminal interactives de l'auto-enregistrement du marketplace officiel | Ne supprime pas un marketplace déjà enregistré. La liste blanche et la liste noire contrôlent le même auto-enregistrement sans celui-ci. Une machine qui a démarré une fois avec celui-ci défini ne reprend pas l'auto-enregistrement après l'avoir désactivé |

214 

215Chaque clé du tableau est un paramètre géré, à l'exception de `enabledPlugins`, `syncClaudeAiPlugins` et `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` :

216 

217* **`enabledPlugins`** : vous pouvez le définir dans n'importe quelle portée, et les paramètres gérés le verrouillent.

218* **`syncClaudeAiPlugins`** : chaque utilisateur peut également le définir dans ses propres paramètres utilisateur ou locaux. Voir sa [portée dans la référence des paramètres](/docs/fr/settings-reference#syncclaudeaiplugins).

219* **`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`** : c'est une variable d'environnement que vous livrez via le bloc `env` géré montré sous [Désactiver les mises à jour pour toute la flotte](#turn-updates-off-for-the-whole-fleet).

220 

221Chaque clé de paramètres ici a une entrée dans la [référence des paramètres](/docs/fr/settings-reference).

222 

223<h4 id="aliases-for-the-marketplace-keys">

224 Alias pour les clés du marketplace

225</h4>

226 

227`strictKnownMarketplaces` peut également être orthographié `allowedMarketplaces`, et `extraKnownMarketplaces` peut également être orthographié `additionalMarketplaces`.

228 

229* **Version** : les alias nécessitent Claude Code v2.1.232 ou ultérieur, et les clients plus anciens les ignorent. Dans un fichier qu'une flotte mixte lit, gardez les noms canoniques.

230* **Les deux orthographes définies** : quand un fichier définit les deux orthographes, la valeur de la clé canonique s'applique.

231 

232<h3 id="allowlist-with-strictknownmarketplaces">

233 Liste blanche avec `strictKnownMarketplaces`

234</h3>

235 

236Définissez la liste blanche sur une liste de ces objets de source. La plupart des entrées correspondent exactement, les entrées `hostPattern` et `pathPattern` correspondent en tant qu'expressions régulières, et les caractères génériques de propriétaire `github` correspondent par propriétaire :

237 

238* **`github`** : `{ "source": "github", "repo": "your-org/approved-plugins" }`, avec `ref` et `path` optionnels.

239* **Caractère générique de propriétaire `github`** : `{ "source": "github", "repo": "your-org/*" }` correspond à chaque référentiel sous ce propriétaire. Le `*` doit représenter le nom de référentiel entier. Claude Code ignore les entrées telles que `*/plugins` et `your-org/tools-*` comme invalides, donc elles ne correspondent à rien. Nécessite Claude Code v2.1.223 ou ultérieur.

240* **`git`** : `{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }`, avec `ref` et `path` optionnels.

241* **`url`** : `{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }`, avec `headers` optionnels.

242* **`file` et `directory`** : `{ "source": "file", "path": "/opt/marketplace/marketplace.json" }` ou `{ "source": "directory", "path": "/opt/marketplace/plugins" }`, avec des chemins absolus.

243* **`hostPattern`** : `{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }`, comparé à l'hôte des sources `github`, `git` et `url`. Le motif correspond n'importe où dans le nom d'hôte, donc ancrez-le avec `^` et `$` comme montré pour correspondre à l'hôte entier. Une source `github` compte toujours comme `github.com`. Utilisez une entrée `hostPattern` pour un serveur GitHub Enterprise Server ou un hôte GitLab où les développeurs créent leurs propres marketplaces. La [page GHES](/docs/fr/github-enterprise-server#allowlist-ghes-marketplaces-in-managed-settings) a l'exemple travaillé.

244* **`pathPattern`** : `{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }`, comparé au `path` des sources `file` et `directory`. Le motif correspond n'importe où dans le chemin, donc commencez-le par `^` pour épingler un préfixe de répertoire. `".*"` autorise chaque chemin local.

245* **`skills-dir`** : `{ "source": "skills-dir" }` garde les [plugins du répertoire de compétences](#keep-skills-directory-plugins-loading) en chargement tandis qu'une liste blanche est définie, et ne correspond à aucun marketplace.

246 

247<h4 id="how-entries-match">

248 Comment les entrées correspondent

249</h4>

250 

251Une entrée `url` correspond sur sa valeur `url` ; `headers` ne sont pas comparés. Pour les entrées `github` et `git`, le `repo` ou `url`, le `ref` et le `path` doivent tous correspondre, ou être absents des deux côtés :

252 

253* Une entrée sans `ref` ne couvre pas une source avec `ref: "main"`.

254* Une entrée pour `your-org/your-marketplace` ne couvre pas une URL `git` qui clone le même référentiel.

255* Une barre oblique finale, un suffixe `.git` ou `ssh://` à la place de `https://` est une valeur différente. Quand un marketplace peut être cloné par plus d'une URL, préférez une entrée `hostPattern`.

256 

257Les entrées de caractère générique de propriétaire suivent les règles exactes pour `ref` et correspondent à n'importe quel `path` à l'intérieur du référentiel à moins que l'entrée n'en épingle un. La correspondance de caractère générique est sensible à la casse sur la liste blanche.

258 

259<h4 id="keep-skills-directory-plugins-loading">

260 Garder les plugins du répertoire de compétences en chargement

261</h4>

262 

263Les plugins du répertoire de compétences sont les plugins que les utilisateurs gardent sous `~/.claude/skills/` ou un `.claude/skills/` du projet dans des dossiers qui portent un `.claude-plugin/plugin.json`. Si vous définissez une liste blanche sans une entrée `{ "source": "skills-dir" }`, ils arrêtent de se charger. Les [compétences](/docs/fr/skills) simples, c'est-à-dire un `SKILL.md` sans ce manifeste, continuent de se charger.

264 

265<h4 id="marketplaces-hosted-on-claude-ai">

266 Marketplaces hébergés sur claude.ai

267</h4>

268 

269La liste blanche et la liste noire correspondent à un [marketplace hébergé sur claude.ai](/docs/fr/plugins/install#add-from-claude-ai) par son hôte. Pour en autoriser ou en bloquer un, ajoutez une entrée `hostPattern` qui correspond à `claude.ai` à `strictKnownMarketplaces` ou `blockedMarketplaces`. Sur la liste blanche, une telle entrée admet vos marketplaces claude.ai de l'organisation et les marketplaces par défaut de claude.ai, mais pas un marketplace composé des téléchargements claude.ai propres d'un membre ou dont la portée claude.ai n'a pas été déclarée. Nécessite Claude Code v2.1.273 ou ultérieur.

270 

271<h4 id="lock-every-source-out">

272 Verrouiller chaque source

273</h4>

274 

275Une liste blanche vide, `[]`, verrouille chaque source de marketplace, y compris le marketplace officiel.

276 

277Ce verrouillage ne couvre pas les plugins [synchronisés à partir de claude.ai](/docs/fr/plugins/loading#synced-plugins), que Claude Code télécharge à partir du compte de chaque utilisateur plutôt qu'à partir d'un marketplace. Pour arrêter ceux-ci aussi, définissez [`syncClaudeAiPlugins`](/docs/fr/settings-reference#syncclaudeaiplugins) sur `false` dans les paramètres gérés, ou désactivez les compétences pour votre organisation sur claude.ai.

278 

279<h3 id="blocklist-with-blockedmarketplaces">

280 Liste noire avec `blockedMarketplaces`

281</h3>

282 

283`blockedMarketplaces` prend les mêmes objets de source que [`strictKnownMarketplaces`](#allowlist-with-strictknownmarketplaces) et est vérifiée en premier, donc une source sur les deux listes est bloquée. La correspondance de liste noire est plus large que la correspondance de liste blanche :

284 

285* Les URL git sont canonicalisées, donc les formes `git@` et `https://`, les suffixes `.git` et les barres obliques finales d'un référentiel `github.com` correspondent tous à la même entrée.

286* Une entrée `github` bloque également l'URL `git` équivalente, et vice versa.

287* Pour une entrée `owner/*`, la comparaison du propriétaire est insensible à la casse.

288* Une entrée sans `ref` ou `path` bloque chaque ref et chemin des référentiels qu'elle correspond.

289 

290Cette entrée bloque chaque référentiel sous un propriétaire GitHub :

291 

292```json theme={null}

293{

294 "blockedMarketplaces": [

295 { "source": "github", "repo": "untrusted-org/*" }

296 ]

297}

298```

299 

300Les entrées `url` dans `blockedMarketplaces` s'appliquent également quand un utilisateur ajoute une URL de référentiel `https://` que Claude Code [clone plutôt que récupère](/docs/fr/plugins/cli-reference#plugin-marketplace-add), comme une URL de référentiel `github.com` ou `gitlab.com` nue. L'utilisateur ne peut pas ajouter cette URL si une entrée la nomme. La correspondance ignore le suffixe `.git` et tout ref que l'utilisateur ajoute après `#`. Nécessite Claude Code v2.1.232 ou ultérieur.

301 

302Une entrée `{ "source": "skills-dir" }` ici arrête les [plugins du répertoire de compétences](#keep-skills-directory-plugins-loading) de se charger, à partir de `~/.claude/skills/` et du `.claude/skills/` d'un projet.

303 

304Une liste noire qui nomme uniquement cette entrée ne compte pas comme une restriction active, donc elle ne [arrête pas les plugins dont Claude Code ne peut pas trouver le marketplace](#restrict-what-users-can-install) de se charger.

305 

306<h3 id="allow-the-official-marketplace-and-your-own">

307 Autoriser le marketplace officiel et le vôtre

308</h3>

309 

310La plupart des organisations autorisent le marketplace officiel et le leur, et enregistrent les deux pour que chaque machine les ait. Cette politique de paramètres gérés autorise les deux marketplaces, enregistre les deux, force-active deux plugins et rejette `--plugin-dir` :

311 

312```json theme={null}

313{

314 "strictKnownMarketplaces": [

315 { "source": "github", "repo": "anthropics/claude-plugins-official" },

316 { "source": "github", "repo": "your-org/*" },

317 { "source": "skills-dir" }

318 ],

319 "extraKnownMarketplaces": {

320 "claude-plugins-official": {

321 "source": { "source": "github", "repo": "anthropics/claude-plugins-official" }

322 },

323 "your-marketplace": {

324 "source": { "source": "github", "repo": "your-org/your-marketplace" }

325 }

326 },

327 "enabledPlugins": {

328 "code-formatter@your-marketplace": true,

329 "deploy-helper@your-marketplace": true

330 },

331 "disableSideloadFlags": true

332}

333```

334 

335Sur une machine avec cette politique, ajouter une source en dehors de la liste, par exemple `/plugin marketplace add https://example.com/other-marketplace.git`, échoue avec un message contenant `is blocked by enterprise policy` suivi des sources autorisées. `claude --plugin-dir ./x` se termine avec un message nommant `disableSideloadFlags`.

336 

337L'entrée `{ "source": "skills-dir" }` garde les [plugins du répertoire de compétences](#keep-skills-directory-plugins-loading) en chargement sous cette liste blanche. Supprimez cette entrée et ils arrêtent de se charger.

338 

339Enregistrez les deux marketplaces avec des entrées `extraKnownMarketplaces` explicites, comme cette politique le fait, plutôt que de compter sur la liste blanche ou sur l'auto-enregistrement du marketplace officiel :

340 

341* **La liste blanche n'enregistre rien** : une entrée `extraKnownMarketplaces` le fait, et elle doit elle-même passer la liste blanche. Claude Code refuse d'enregistrer un marketplace géré dont la source ne correspond pas à la liste blanche.

342* **Le marketplace officiel ne s'enregistre que dans une session de terminal interactif** : même là, il ne s'enregistre que quand la liste blanche le permet. Une exécution `-p` ou un terminal attaché à une session cloud ne l'enregistre jamais.

343* **Une tentative bloquée est mémorisée** : si une machine a jamais fonctionné sous une politique qui bloquait le marketplace officiel, Claude Code enregistre la tentative bloquée et ne réessaie pas après le changement de politique. Un verrouillage `[]` est une telle politique. Cette machine l'enregistre à nouveau uniquement via une entrée `extraKnownMarketplaces` comme celle de cette politique, une entrée `enabledPlugins` pour l'un de ses plugins, ou un `/plugin marketplace add` manuel.

344 

345<h2 id="set-update-policy">

346 Définir la politique de mise à jour

347</h2>

348 

349Vous pouvez définir la politique de mise à jour par marketplace, pour toute la flotte, ou par groupe d'utilisateurs via les canaux de version.

350 

351<h3 id="turn-auto-update-on-or-off-per-marketplace">

352 Activer ou désactiver la mise à jour automatique par marketplace

353</h3>

354 

355La mise à jour automatique des plugins s'exécute en arrière-plan après le démarrage pour les marketplaces qui l'ont activée. Pour savoir quels marketplaces l'ont activée par défaut, voir [Quand la mise à jour automatique s'exécute](/docs/fr/plugins/loading#when-auto-update-runs). Pour décider pour la flotte, définissez `"autoUpdate": true` ou `false` sur une entrée `extraKnownMarketplaces` gérée :

356 

357* Si l'entrée gérée définit le champ, Claude Code rejette le basculement `/plugin` de l'utilisateur avec une erreur qui commence par `Auto-update for '<name>' is set by`.

358* Si l'entrée gérée laisse le champ non défini, le basculement de l'utilisateur persiste.

359 

360<h3 id="turn-updates-off-for-the-whole-fleet">

361 Désactiver les mises à jour pour toute la flotte

362</h3>

363 

364Pour désactiver la mise à jour automatique des plugins pour chaque marketplace, définissez `DISABLE_AUTOUPDATER` dans le bloc `env` géré, comme cet exemple le fait. La même variable arrête également les mises à jour de Claude Code lui-même :

365 

366```json theme={null}

367{

368 "env": {

369 "DISABLE_AUTOUPDATER": "1"

370 }

371}

372```

373 

374Pour arrêter les mises à jour de Claude Code lui-même mais garder la mise à jour automatique des plugins, ajoutez `"FORCE_AUTOUPDATE_PLUGINS": "1"` au même bloc. Les autres [variables d'environnement qui arrêtent la mise à jour automatique des plugins](/docs/fr/plugins/loading#when-auto-update-runs) fonctionnent de la même manière.

375 

376`DISABLE_AUTOUPDATER` ne couvre pas les plugins avec une [source `command`](/docs/fr/plugins/marketplace-reference#command-plugin-source). Claude Code réexécute la commande de chaque plugin activé à chaque session et installe la sortie quand elle a changé. Pour ce qui arrête ces exécutions, voir [Quand une source de commande réexécute](/docs/fr/plugins/loading#when-a-command-source-re-runs).

377 

378<h3 id="assign-release-channels-to-user-groups">

379 Assigner les canaux de version aux groupes d'utilisateurs

380</h3>

381 

382Pour exécuter des canaux stables et d'accès anticipé, hébergez deux marketplaces qui pointent vers différents refs des mêmes plugins. Ensuite, donnez à chaque groupe d'utilisateurs son propre marketplace via soit des paramètres gérés par le point de terminaison séparés, soit une politique de passerelle. Les paramètres gérés par le serveur de la console d'administration [s'appliquent à chaque utilisateur de votre organisation](/docs/fr/server-managed-settings#current-limitations), donc ils ne peuvent pas assigner des paramètres différents à différents groupes.

383 

384* Déployez des [paramètres gérés par le point de terminaison](/docs/fr/managed-settings#delivery-mechanisms) séparés, tels qu'un fichier de paramètres gérés ou un profil MDM, sur les appareils de chaque groupe. Pour vérifier si le fichier ou le profil par groupe s'applique sur un appareil qui a également une source au niveau de l'organisation, voir [Comment Claude Code combine les sources gérées](/docs/fr/managed-settings#precedence-within-the-managed-tier).

385* Définissez une [politique de passerelle d'applications Claude](/docs/fr/claude-apps-gateway-config#managed) par groupe. La passerelle applique la première politique dont la règle de correspondance correspond à un utilisateur, donc ordonnez les politiques pour que chaque utilisateur atteigne la politique de son groupe. La `extraKnownMarketplaces` de cette politique ne fusionne pas avec celle d'une autre politique, donc listez chaque marketplace dont le groupe a besoin, pas seulement son marketplace de canal.

386 

387Avec l'un ou l'autre mécanisme, le groupe stable reçoit cette configuration :

388 

389```json theme={null}

390{

391 "extraKnownMarketplaces": {

392 "stable-tools": {

393 "source": { "source": "github", "repo": "your-org/stable-tools" }

394 }

395 }

396}

397```

398 

399Le groupe d'accès anticipé reçoit `latest-tools` à la place. Pour configurer les deux marketplaces, voir [Exécuter les canaux de version](/docs/fr/plugins/host-marketplace#run-release-channels).

400 

401<h2 id="recommend-plugins">

402 Recommander des plugins

403</h2>

404 

405Les propriétaires de marketplace peuvent joindre des signaux `relevance` aux entrées pour que Claude Code suggère le plugin quand un projet correspond.

406 

407Les suggestions d'un marketplace n'apparaissent que quand il est enregistré sur la machine de l'utilisateur, vous listez son nom dans `pluginSuggestionMarketplaces` dans les paramètres gérés, et vous déclarez sa source dans la même politique. Déclarez la source soit comme l'entrée `extraKnownMarketplaces` du marketplace, soit comme une entrée de liste blanche. Le marketplace officiel a besoin uniquement du nom. Voir [Activer les suggestions dans les paramètres gérés](/docs/fr/plugins/relevance#enable-suggestions-in-managed-settings).

408 

409<h2 id="audit-and-review">

410 Auditer et examiner

411</h2>

412 

413Les événements OpenTelemetry et l'API Analytics vous disent ce que votre flotte installe et exécute.

414 

415Pour ce qu'un plugin peut exécuter sur une machine et ce que chaque niveau de confiance permet, lisez [Sécurité des plugins](/docs/fr/plugins/security) avant d'approuver un marketplace.

416 

417<h3 id="opentelemetry-events">

418 Événements OpenTelemetry

419</h3>

420 

421`claude_code.plugin_installed` enregistre chaque installation, et `claude_code.plugin_loaded` enregistre chaque plugin activé au démarrage de la session. Les deux événements masquent ou omettent les noms de plugins et de marketplaces tiers à moins que vous définissiez `OTEL_LOG_TOOL_DETAILS=1`, comme [Noms de plugins masqués dans votre backend](/docs/fr/plugins/measure#redacted-plugin-names-in-your-backend) le montre. Les listes de champs se trouvent sous [Événement de plugin installé](/docs/fr/monitoring-usage#plugin-installed-event) et [Événement de plugin chargé](/docs/fr/monitoring-usage#plugin-loaded-event).

422 

423<h3 id="analytics-api">

424 API Analytics

425</h3>

426 

427Sur le plan Enterprise, `GET /v1/organizations/analytics/plugins` retourne les comptes d'installation et d'invocation par plugin, par jour, sur Claude Code et Cowork. Vous pouvez grouper les comptes par utilisateur ou groupe RBAC. L'activité de plugin qui atteint Anthropic sans un nom de plugin apparaît dans une ligne `third-party` agrégée. Voir la [référence du point de terminaison](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list) et [Accéder aux données par programmation](/docs/fr/analytics#access-data-programmatically) pour la clé dont elle a besoin.

428 

429<h2 id="plan-for-what-managed-settings-can’t-enforce">

430 Planifier ce que les paramètres gérés ne peuvent pas appliquer

431</h2>

432 

433Ces demandes des examens de sécurité n'ont pas de clé dédiée dans le schéma de paramètres actuel. Les contrôles existants les plus proches sont :

434 

435* **Ciblage par utilisateur ou par groupe** : chaque clé de plugin s'applique à chaque utilisateur qui reçoit les paramètres. Les paramètres gérés par le serveur livrent une configuration par organisation. Pour une politique par groupe, utilisez des paramètres gérés par le point de terminaison séparés ou des politiques de passerelle, comme sous [Assigner les canaux de version aux groupes d'utilisateurs](#assign-release-channels-to-user-groups).

436* **Restreindre les entrées à l'intérieur d'un marketplace autorisé** : la liste blanche correspond aux sources de marketplace. Pour bloquer un plugin d'un marketplace autorisé, définissez-le sur `false` dans `enabledPlugins` géré.

437* **Masquer `/plugin`** : aucune clé ne désactive la commande. L'équivalent le plus proche combine une liste blanche nommant uniquement votre marketplace, des entrées `enabledPlugins` gérées pour les plugins que vous fournissez, et `disableSideloadFlags`.

438* **Contrôler `--plugin-dir` via la liste blanche** : la liste blanche ne couvre pas `--plugin-dir`. `disableSideloadFlags` le fait.

439* **Appliquer les bascules de plugin claude.ai via ces clés** : [**Paramètres de l'organisation > Plugins et compétences**](https://claude.ai/admin-settings/skills?tab=inventory) ne définit pas les clés de cette page. Ce que les membres et votre organisation activent là atteint l'interface de ligne de commande sous forme de [plugins synchronisés](/docs/fr/plugins/loading#synced-plugins), qui ont leurs propres contrôles.

440 

441<h2 id="troubleshoot-policy">

442 Dépanner la politique

443</h2>

444 

445Si la politique de plugin ne se comporte pas comme prévu sur une machine, vérifiez d'abord ces symptômes :

446 

447* **Le fichier géré n'a pas été analysé** : quand un `managed-settings.json` n'est pas un JSON valide, Claude Code refuse de démarrer et imprime [une erreur nommant le fichier](/docs/fr/errors#managed-settings-document-could-not-be-parsed). Un fichier qui s'analyse mais a une entrée invalide garde le reste de sa politique. Voir [Entrées invalides dans les paramètres gérés](/docs/fr/managed-settings#invalid-entries-in-managed-settings).

448* **La source gérée n'a pas chargé** : exécutez `/status` et cherchez `Enterprise managed settings` dans la ligne `Setting sources`. S'il manque, la source n'a pas chargé.

449* **Un utilisateur signale `blocked by enterprise policy`** : le message nomme le marketplace ou sa source. Pour une liste blanche, il liste également les sources autorisées. Les entrées visibles par l'utilisateur se trouvent sur [Dépanner les plugins](/docs/fr/plugins/troubleshooting).

450* **Un plugin que l'utilisateur a désactivé dans `~/.claude/settings.json` se charge toujours** : une autre source de paramètres l'a réactivé, comme une entrée `enabledPlugins` gérée qui le force-active. `/plugin` et `claude plugin list` affichent `Disabled in ~/.claude/settings.json but still loads` avec cette source de paramètres.

451 

452<h2 id="next-steps">

453 Étapes suivantes

454</h2>

455 

456* [Référence du marketplace](/docs/fr/plugins/marketplace-reference#marketplace-sources) : les valeurs `source` que `extraKnownMarketplaces`, `strictKnownMarketplaces` et `blockedMarketplaces` acceptent

457* [Héberger et maintenir un marketplace](/docs/fr/plugins/host-marketplace) : exécutez le marketplace vers lequel votre politique pointe

458* [Sécurité et confiance des plugins](/docs/fr/plugins/security) : ce qu'un plugin peut faire sur une machine et comment en examiner un avant l'installation

459* [Paramètres gérés par le serveur](/docs/fr/server-managed-settings) : livrez ces clés à partir de la console d'administration claude.ai

460* [Dépanner les plugins](/docs/fr/plugins/troubleshooting#blocked-by-your-organization) : les messages que les utilisateurs voient quand la politique les bloque

plugins/overview.md +142 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Aperçu des plugins

6 

7> Comprenez ce qu'est un plugin Claude Code, quand vous en avez besoin au lieu d'une compétence autonome ou d'un serveur MCP, et quelle page lire pour en installer ou en créer un.

8 

9Un plugin Claude Code est un répertoire de skills, d'agents, de hooks, de serveurs MCP ou d'autres composants que Claude Code installe et charge comme une seule unité. La plupart des plugins proviennent d'une marketplace, qui est un catalogue listant les plugins et indiquant où récupérer chacun. Vous pouvez également charger un plugin à partir d'un dossier que quelqu'un vous donne, ou [créer le vôtre](/docs/fr/plugins/create).

10 

11<Note>

12 Si vous utilisez le chat claude.ai ou Cowork et non Claude Code, consultez [Plugins sur claude.ai et dans Cowork](https://claude.com/docs/plugins/overview).

13</Note>

14 

15Pour essayer un plugin maintenant, exécutez `/plugin` dans une session de terminal Claude Code et installez-en un à partir de l'onglet **Discover**, qui liste les plugins de la marketplace officielle d'Anthropic et de toute marketplace que vous avez ajoutée. À partir de là :

16 

17* [Installer et gérer les plugins](/docs/fr/plugins/install) : les étapes d'installation complètes, les portées et autres surfaces

18* [Créer un plugin](/docs/fr/plugins/create) : créez le vôtre

19* [Décider si vous avez besoin d'un plugin](#decide-whether-you-need-a-plugin) : si un plugin est le bon outil pour ce que vous voulez

20 

21<h2 id="understand-what-a-plugin-is">

22 Comprendre ce qu'est un plugin

23</h2>

24 

25Un plugin est un répertoire de composants, généralement avec un manifeste. Le manifeste, un fichier JSON à `.claude-plugin/plugin.json`, donne son nom au plugin et peut ajouter une version, une description et d'autres [métadonnées](/docs/fr/plugins/manifest-reference). Les composants sont ce que le plugin ajoute à Claude Code, tels que :

26 

27* [**Skills**](/docs/fr/plugins/components#skills) : instructions `SKILL.md` que Claude charge quand c'est pertinent, et que vous pouvez également exécuter en tant que commande

28* [**Agents**](/docs/fr/plugins/components#agents) : définitions de sous-agents que Claude peut déléguer

29* [**Hooks**](/docs/fr/plugins/components#hooks) : commandes que Claude Code exécute à des points de son cycle de vie, comme après chaque modification

30* [**Serveurs MCP**](/docs/fr/plugins/components#mcp-servers) : serveurs d'outils auxquels Claude Code se connecte pendant que le plugin est activé

31 

32Ce diagramme montre un plugin nommé `my-plugin` qui contient un de chacun de ces composants, et ce que vous obtenez de chaque fichier une fois que le plugin se charge.

33 

34<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=f623b64e82713b830e48174f0a922888" className="dark:hidden" alt="Diagramme en deux colonnes jointes par cinq flèches droites. À gauche, le répertoire d'un plugin nommé my-plugin, contenant un manifeste à .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json et d'autres composants. À droite, ce que chaque fichier vous donne dans votre session : le manifeste définit le nom du plugin, my-plugin ; la skill s'exécute en tant que /my-plugin:review ; le fichier agent est un sous-agent que Claude peut déléguer ; le fichier hooks contient des hooks qui s'exécutent sur les événements du cycle de vie ; et .mcp.json ajoute un serveur MCP qui donne à Claude des outils." width="760" height="336" data-path="images/plugin-directory.svg" />

35 

36<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory-dark.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=17ee2bd45b63154fcc148ae1d1f736d8" className="hidden dark:block" alt="Diagramme en deux colonnes jointes par cinq flèches droites. À gauche, le répertoire d'un plugin nommé my-plugin, contenant un manifeste à .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json et d'autres composants. À droite, ce que chaque fichier vous donne dans votre session : le manifeste définit le nom du plugin, my-plugin ; la skill s'exécute en tant que /my-plugin:review ; le fichier agent est un sous-agent que Claude peut déléguer ; le fichier hooks contient des hooks qui s'exécutent sur les événements du cycle de vie ; et .mcp.json ajoute un serveur MCP qui donne à Claude des outils." width="760" height="336" data-path="images/plugin-directory-dark.svg" />

37 

38Pour chaque type de composant qu'un plugin peut contenir, avec un exemple de chacun, consultez [Composants de plugin](/docs/fr/plugins/components). Pour voir où chaque élément est situé dans le répertoire d'un plugin, utilisez l'[explorateur de plugin](/docs/fr/plugins/components#explore-the-plugin-directory) sur cette page.

39 

40<h3 id="decide-whether-you-need-a-plugin">

41 Décider si vous avez besoin d'un plugin

42</h3>

43 

44Les skills, sous-agents, hooks et serveurs MCP fonctionnent tous seuls, sans plugin. Une skill que vous enregistrez dans `~/.claude/skills/`, par exemple, est disponible dans chaque projet sur votre machine. Pour en configurer une seule, consultez [Skills](/docs/fr/skills), [Sous-agents](/docs/fr/sub-agents), [Hooks](/docs/fr/hooks-guide) ou [MCP](/docs/fr/mcp).

45 

46Utilisez un plugin quand vous voulez plusieurs skills, sous-agents, hooks ou serveurs MCP empaquetés comme une seule unité. Installez-en un pour obtenir une configuration que quelqu'un d'autre a construite, avec une seule commande et des mises à jour de sa marketplace. Créez-en un pour donner votre propre configuration à vos coéquipiers, l'installer dans de nombreux projets ou publier des versions avec numérotation.

47 

48<h3 id="what-an-enabled-plugin-adds-to-your-sessions">

49 Ce qu'un plugin activé ajoute à vos sessions

50</h3>

51 

52Un plugin activé fait partie de chaque session, pas seulement des sessions où vous l'utilisez. Cela a quelques conséquences qu'il vaut la peine de connaître avant d'en installer un :

53 

54* **Contexte et utilisation** : pour chaque skill, agent et commande que [Claude peut invoquer de lui-même](/docs/fr/skills#control-who-invokes-a-skill), le nom et la description sont dans le contexte de Claude à chaque tour pour que Claude sache qu'il existe. Ces jetons comptent vers votre utilisation et laissent moins de place dans la [fenêtre de contexte](/docs/fr/context-window) même dans les sessions où rien du plugin ne s'exécute. Le texte complet d'une skill ou d'un agent se charge uniquement quand il est utilisé. Ce que les serveurs MCP du plugin ajoutent par tour suit la [recherche d'outils MCP](/docs/fr/mcp#scale-with-mcp-tool-search).

55* **Processus** : les serveurs MCP que le plugin définit s'exécutent aux côtés de chaque session où il est activé, et ses hooks se déclenchent à leurs événements.

56* **Permissions** : ce que le plugin exécute, il l'exécute en tant que vous. Consultez [Sécurité et confiance des plugins](/docs/fr/plugins/security) pour savoir ce qu'il faut d'abord examiner.

57 

58Vous pouvez vérifier l'empreinte d'un plugin à chaque étape :

59 

60* **Avant d'installer** : ouvrez le plugin à partir de l'onglet **Marketplaces** dans `/plugin`. Les plugins de la marketplace officielle d'Anthropic affichent une estimation du **Context cost** là.

61* **Après l'installation** : [Mesurer le coût d'un plugin](/docs/fr/plugins/measure#measure-what-a-plugin-costs) montre comment lire l'empreinte d'un plugin, et le groupe **Not used recently** de l'onglet **Installed** liste les plugins que vous pourriez désactiver.

62* **Pour l'arrêter sans le désinstaller** : désactivez le plugin avec `/plugin` ou, dans votre shell, `claude plugin disable`. Consultez [Gérer les plugins installés](/docs/fr/plugins/install#manage-installed-plugins).

63 

64<h2 id="get-plugins-from-a-marketplace">

65 Obtenir des plugins à partir d'une marketplace

66</h2>

67 

68Une marketplace est un référentiel ou un répertoire avec un fichier `.claude-plugin/marketplace.json` qui liste les plugins et indique où récupérer chacun. C'est un catalogue, pas un magasin hébergé. Vous ajoutez une marketplace une fois, puis installez les plugins à partir de celle-ci par nom, comme `commit-commands@claude-plugins-official`.

69 

70<Note>

71 Une marketplace de plugins n'est pas [Claude Marketplace](https://claude.com/marketplace). Claude Marketplace est le site web à claude.com/marketplace où vous parcourez les plugins, les connecteurs, les produits partenaires et les partenaires de service. Ce n'est pas une marketplace que vous ajoutez avec `/plugin marketplace add`.

72</Note>

73 

74Claude Code ajoute la marketplace officielle d'Anthropic la première fois que vous démarrez une session de terminal interactive, sauf si une [politique gérée](/docs/fr/plugins/org#allow-the-official-marketplace-and-your-own) l'en empêche. Claude Code n'ajoute aucune autre marketplace de lui-même, y compris les marketplaces communautaires et de démonstration d'Anthropic. Pour distinguer les trois marketplaces d'Anthropic, lisez [Marketplaces d'Anthropic](/docs/fr/plugins/anthropic-marketplaces). Pour voir ce que celle officielle liste, ouvrez l'onglet **Discover** de `/plugin` dans une session ou parcourez [Claude Marketplace](https://claude.com/marketplace/plugins).

75 

76Ce diagramme montre le chemin d'une marketplace à votre session. Une marketplace liste un plugin, vous installez ce plugin, et Claude Code charge ses composants.

77 

78<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugins-model.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=4196344954b7c2e27fc0bd6a9a1113a1" className="dark:hidden" alt="Diagramme du chemin de la marketplace en trois boîtes, de gauche à droite. Une marketplace, un catalogue de plugins, liste un plugin. Le plugin est un répertoire installé comme une unité, contenant des skills, des agents, des hooks, des serveurs MCP et d'autres composants. Vous installez le plugin dans Claude Code, qui charge ses composants." width="760" height="252" data-path="images/plugins-model.svg" />

79 

80<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugins-model-dark.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=f6cdefe1fc05daf3b253d26e9f3f70f6" className="hidden dark:block" alt="Diagramme du chemin de la marketplace en trois boîtes, de gauche à droite. Une marketplace, un catalogue de plugins, liste un plugin. Le plugin est un répertoire installé comme une unité, contenant des skills, des agents, des hooks, des serveurs MCP et d'autres composants. Vous installez le plugin dans Claude Code, qui charge ses composants." width="760" height="252" data-path="images/plugins-model-dark.svg" />

81 

82[Installer et gérer les plugins](/docs/fr/plugins/install#install-a-plugin) contient les étapes d'installation pour chaque endroit où vous exécutez Claude Code. Pendant que vous développez un plugin, vous n'avez pas besoin d'une marketplace : chargez-le directement à partir de son dossier avec `--plugin-dir`, comme le montre [Développer sans marketplace](/docs/fr/plugins/create#develop-without-a-marketplace).

83 

84<h3 id="make-an-installed-plugin-available-in-your-session">

85 Rendre un plugin installé disponible dans votre session

86</h3>

87 

88Avant qu'un plugin que vous avez installé vous donne une skill que vous pouvez exécuter, il doit être présent à chacune de ces couches :

89 

90* **Paramètres** : vos paramètres listent les marketplaces que vous avez ajoutées et les plugins qui sont activés.

91* **Disque** : `~/.claude/plugins/` contient ce que Claude Code a récupéré et installé.

92* **Session** : les plugins se chargent au démarrage, ou quand vous [rechargez les plugins](/docs/fr/plugins/loading#check-which-stage-a-plugin-reached).

93 

94Lisez [Référence de chargement des plugins](/docs/fr/plugins/loading) pour les règles à chaque couche, y compris quel fichier de paramètres a la priorité et où se trouvent les fichiers sur le disque.

95 

96<h2 id="tell-anthropic’s-marketplaces-from-third-party-ones">

97 Distinguer les marketplaces d'Anthropic des marketplaces tierces

98</h2>

99 

100Le nom d'une marketplace la place dans l'un des trois niveaux. Claude Code accepte les noms officiels et communautaires uniquement pour les marketplaces provenant de référentiels `github.com/anthropics/` :

101 

102* **Officiel** : marketplaces avec l'un des [noms de marketplace officiels](/docs/fr/plugins/security#official-marketplace-names) d'Anthropic, y compris `claude-plugins-official` et la marketplace de démonstration `claude-code-plugins`.

103* **Communauté** : marketplaces avec l'un des noms communautaires d'Anthropic, comme `claude-community`. [Identifier les marketplaces d'Anthropic par nom](/docs/fr/plugins/security#marketplace-tiers) les liste.

104* **Tiers** : toute autre marketplace. Une marketplace que votre coéquipier ou votre organisation publie est tierce.

105 

106Quel que soit le niveau, un plugin que vous installez peut exécuter du code avec vos privilèges utilisateur. Lisez [Sécurité et confiance des plugins](/docs/fr/plugins/security) pour savoir comment examiner un plugin avant de l'installer.

107 

108Par le biais des [paramètres gérés](/docs/fr/settings#settings-files), une organisation peut autoriser ou bloquer les marketplaces, forcer l'installation de plugins et désactiver le chargement en session uniquement. Lisez [Gérer les plugins pour votre organisation](/docs/fr/plugins/org) pour ces contrôles.

109 

110<h2 id="understand-install-scopes">

111 Comprendre les portées d'installation

112</h2>

113 

114Quand vous installez un plugin, vous choisissez une portée, et la portée décide pour qui le plugin est activé :

115 

116* **Portée utilisateur** : activé pour vous dans chaque projet sur cet ordinateur

117* **Portée du projet** : activé pour tous ceux qui travaillent dans ce référentiel, via le `.claude/settings.json` commité. Chaque collaborateur doit toujours [l'installer sur sa propre machine](/docs/fr/plugins/loading#enabled-in-project-settings-but-not-installed)

118* **Portée locale** : activé pour vous dans ce référentiel uniquement

119 

120Un plugin que vous installez à portée utilisateur dans le terminal, les sessions locales de l'application de bureau ou l'extension VS Code est disponible dans les deux autres sur cet ordinateur, car tous les trois lisent les mêmes fichiers de paramètres. Consultez [Choisir une portée d'installation](/docs/fr/plugins/install#choose-an-install-scope) pour savoir comment en choisir une.

121 

122Une session cloud, y compris une dans le navigateur à claude.ai/code, ne charge pas les plugins dans vos paramètres locaux. Pour les étapes d'installation dans le terminal, VS Code et l'application de bureau, et pour ce qu'une session cloud charge, consultez [Installer un plugin](/docs/fr/plugins/install#install-a-plugin).

123 

124<Note>

125 Le même format de plugin s'installe également sur claude.ai et dans Cowork, où un ensemble différent de composants se charge. Pour ces surfaces, consultez [Plugins sur claude.ai et dans Cowork](https://claude.com/docs/plugins/overview) sur claude.com.

126</Note>

127 

128<h2 id="next-steps">

129 Étapes suivantes

130</h2>

131 

132La plupart des gens commencent par installer un plugin à partir de la marketplace officielle d'Anthropic, que Claude Code ajoute la première fois que vous démarrez une session de terminal interactive. Exécutez `/plugin` dans une session de terminal pour la parcourir, ou suivez [Installer et gérer les plugins](/docs/fr/plugins/install), qui couvre également l'application de bureau et VS Code. Pour voir ce qui se trouve dans cette marketplace avant d'ouvrir Claude Code, parcourez [Claude Marketplace](https://claude.com/marketplace/plugins) sur le web.

133 

134Pour créer le vôtre, [Créer un plugin](/docs/fr/plugins/create) commence par un répertoire vide et se termine par un plugin fonctionnel.

135 

136Une fois que vous avez installé ou créé un plugin, ces pages couvrent ce qui vient ensuite :

137 

138* **Partager ce que vous avez créé** : [Publier et distribuer un plugin](/docs/fr/plugins/publish)

139* **Vérifier si cela fonctionne et est utilisé** : [Tester les plugins avec des evals](/docs/fr/plugin-evals) et [Mesurer le coût et l'utilisation des plugins](/docs/fr/plugins/measure)

140* **Exécuter une marketplace pour votre équipe** : [Créer une marketplace](/docs/fr/plugins/create-marketplace), puis [Héberger et maintenir une marketplace](/docs/fr/plugins/host-marketplace)

141* **Définir la politique des plugins pour une organisation** : [Gérer les plugins pour votre organisation](/docs/fr/plugins/org)

142* **Corriger un problème** : [Dépanner les plugins](/docs/fr/plugins/troubleshooting)

plugins/publish.md +210 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Publier et distribuer un plugin

6 

7> Publiez un plugin Claude Code via votre propre marketplace ou la marketplace communautaire d'Anthropic, avec une checklist de pré-lancement et comment les utilisateurs reçoivent les mises à jour.

8 

9Publier un plugin Claude Code signifie le lister dans une marketplace, un catalogue JSON qui répertorie les plugins et où récupérer chacun d'eux, afin que d'autres personnes puissent l'installer par nom et recevoir vos mises à jour. Vous pouvez gérer votre propre marketplace ou soumettre votre plugin à la marketplace communautaire d'Anthropic. Pour partager un plugin sans le publier, envoyez aux gens le répertoire du plugin ou un `.zip` de celui-ci à charger eux-mêmes.

10 

11Cette page s'adresse à l'auteur d'un plugin fonctionnel qui est prêt à le partager.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Votre plugin n'est pas encore terminé** : commencez par [Créer un plugin](/docs/fr/plugins/create)

17 * **Vous maintenez une CLI ou un SDK avec un plugin dans une marketplace officielle** : voir [Recommander votre plugin depuis votre CLI](/docs/fr/plugins/cli-hints)

18</Note>

19 

20Commencez par [Choisir comment distribuer](#choose-how-to-distribute) pour comparer les options de distribution. Si vous connaissez déjà votre route, allez à [Préparer votre plugin pour la sortie](#prepare-your-plugin-for-release), puis suivez la section de votre route pour savoir quoi dire à vos utilisateurs et comment ils reçoivent vos mises à jour.

21 

22<h2 id="choose-how-to-distribute">

23 Choisir comment distribuer

24</h2>

25 

26Choisissez une option de distribution en fonction de qui doit installer le plugin :

27 

28| Route | Qui peut installer | Ce dont vous avez besoin | Les utilisateurs reçoivent-ils vos mises à jour automatiquement ? |

29| :---------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

30| [Pas de marketplace](#share-a-plugin-without-a-marketplace) | Les personnes à qui vous envoyez le dossier du plugin ou un `.zip` de celui-ci | Le dossier du plugin | Aucune. Ils chargent la copie que vous avez envoyée |

31| [Votre propre marketplace](#publish-through-your-own-marketplace) | Quiconque peut accéder au référentiel, qui peut être un référentiel privé que votre équipe peut cloner | Un référentiel git ou un autre hôte avec un `.claude-plugin/marketplace.json` qui répertorie votre plugin | Désactivé |

32| [Marketplace communautaire d'Anthropic](#submit-to-the-community-marketplace) | Quiconque ajoute `anthropics/claude-plugins-community` | Une soumission via le formulaire de soumission du répertoire de plugins | Désactivé |

33 

34La mise à jour automatique est un paramètre par marketplace du côté de l'utilisateur qui récupère les nouvelles versions en arrière-plan.

35 

36<h2 id="prepare-your-plugin-for-release">

37 Préparer votre plugin pour la sortie

38</h2>

39 

40Le nom, la version, la validation et une installation à partir d'une marketplace décident si une sortie fonctionne pour les personnes qui l'installent. Vérifiez-les avant la première sortie et à nouveau avant chaque sortie ultérieure.

41 

42<Steps>

43 <Step title="Choisir un nom permanent">

44 Les utilisateurs installent, activent et configurent votre plugin par `name@marketplace`, donc un plugin renommé est un plugin différent pour chaque installation existante. Choisissez un nom en kebab-case comme `deploy-helper`, car `claude plugin validate` avertit sur d'autres formes, et traitez-le comme permanent. Définissez `displayName` dans `plugin.json` pour le libellé que les utilisateurs voient.

45 </Step>

46 

47 <Step title="Décider comment vous allez versionner">

48 Si vous définissez `version` dans `plugin.json` et que vous poussez ultérieurement des commits sans la modifier, `claude plugin update` affiche `<name> is already at the latest version (1.0.0).` et les utilisateurs conservent l'ancienne copie. Soit vous incrémentez `version` à chaque sortie, soit vous l'omettez dans une marketplace hébergée sur git afin que Claude Code utilise le SHA du commit à la place. Voir [Versions et mises à jour](/docs/fr/plugins/loading#versions-and-updates).

49 </Step>

50 

51 <Step title="Valider">

52 Dans votre shell, exécutez `claude plugin validate --strict ./your-plugin`. Une exécution propre affiche `✔ Validation passed`.

53 

54 * **En CI** : conservez `--strict`, qui échoue également l'exécution avec le code de sortie 1 sur les avertissements tels qu'un champ de manifeste inconnu ou une `version` manquante. Supprimez `--strict` si vous avez choisi d'omettre `version` à l'étape précédente.

55 * **Chemins** : la validation signale les chemins de composants qui ne commencent pas par `./`. À l'intérieur des commandes hook et des configurations du serveur MCP, référencez les fichiers comme `${CLAUDE_PLUGIN_ROOT}/...`. Voir [règles de chemin](/docs/fr/plugins/manifest-reference#path-rules).

56 </Step>

57 

58 <Step title="L'installer à partir d'une marketplace locale">

59 Dans votre shell, ajoutez une marketplace locale qui répertorie le plugin avec `claude plugin marketplace add ./path-to-marketplace`, installez le plugin à partir de celle-ci, et démarrez une session pour confirmer qu'il se charge.

60 

61 * Pour la plus petite marketplace qui fonctionne, voir [Créer une marketplace](/docs/fr/plugins/create-marketplace).

62 * Pour savoir si une installation charge votre répertoire source ou une copie en cache, voir [Plugins en place et copiés](/docs/fr/plugins/loading#in-place-and-copied-plugins).

63 </Step>

64 

65 <Step title="Remplir les métadonnées que les utilisateurs voient">

66 Définissez `description`, `author`, `homepage` et `repository` dans `plugin.json`, et ajoutez un `README.md` à la racine du plugin. `homepage` doit être analysable en tant qu'URL. La [référence du manifeste](/docs/fr/plugins/manifest-reference#fields) répertorie tous les champs.

67 </Step>

68 

69 <Step title="Exécuter votre suite d'évaluation">

70 Si vous avez une suite d'évaluation, exécutez `claude plugin eval` dans votre shell. Elle exécute les cas de test du plugin et note les résultats, ce qui détecte les régressions lorsque vous modifiez le plugin. Voir [Tester les plugins avec des évaluations](/docs/fr/plugin-evals).

71 </Step>

72</Steps>

73 

74<h2 id="share-a-plugin-without-a-marketplace">

75 Partager un plugin sans marketplace

76</h2>

77 

78Si le plugin se trouve dans un référentiel git, les gens peuvent le cloner et charger le checkout, ou démarrer Claude Code à partir de leur shell avec `--plugin-url` pointant vers un `.zip` que vous joignez à une sortie. Pour obtenir votre prochaine version, ils tirent ou téléchargent à nouveau. S'il ne se trouve pas dans un référentiel, envoyez-leur le répertoire ou un `.zip` de celui-ci. Ils le chargent de l'une des deux façons suivantes :

79 

80* **Pour une session** : ils démarrent Claude Code à partir de leur shell avec `claude --plugin-dir ./deploy-helper`, où le chemin est le clone, le dossier décompressé ou le `.zip` lui-même. Voir [Drapeaux qui chargent un plugin pour une session](/docs/fr/plugins/cli-reference#flags-that-load-a-plugin-for-one-session).

81* **Pour chaque session** : ils déplacent le répertoire du plugin, avec son `.claude-plugin/plugin.json`, sous `~/.claude/skills/` afin que Claude Code [le charge dans chaque session](/docs/fr/plugins/loading#find-where-a-plugin-came-from).

82 

83L'ajout d'un `.claude-plugin/marketplace.json` à ce même référentiel est ce qui permet aux gens d'installer par nom et de mettre à jour avec une commande ; voir [Publier via votre propre marketplace](#publish-through-your-own-marketplace).

84 

85<h3 id="ship-a-plugin-with-your-own-tool">

86 Livrer un plugin avec votre propre outil

87</h3>

88 

89Si vous maintenez une CLI ou un SDK, publiez le plugin dans une marketplace et faites en sorte que votre installateur ou message post-installation exécute ou imprime les deux commandes dont un utilisateur a besoin : `claude plugin marketplace add <source>`, puis `claude plugin install <name>@<marketplace>`. Pour la découverte en session lorsque quelqu'un utilise votre outil, voir [Recommander votre plugin depuis votre CLI](/docs/fr/plugins/cli-hints).

90 

91<h2 id="publish-through-your-own-marketplace">

92 Publier via votre propre marketplace

93</h2>

94 

95Votre propre marketplace est un fichier `.claude-plugin/marketplace.json` qui répertorie votre plugin, ajouté à un référentiel git. Une fois le fichier dans le référentiel, le plugin est publié, sans formulaire de soumission. Vous pouvez conserver le fichier dans le propre référentiel du plugin ou dans un référentiel séparé.

96 

97<h3 id="add-the-marketplace-file-to-your-repository">

98 Ajouter le fichier marketplace à votre référentiel

99</h3>

100 

101Pour publier à partir du propre référentiel du plugin, enregistrez le fichier marketplace à côté de `plugin.json` dans `.claude-plugin/`, avec une entrée dont la `source` est `"./"`, la racine du référentiel. Donnez à l'entrée le même `name` que `plugin.json`, selon [Garder le nom de l'entrée et le nom du manifeste identiques](/docs/fr/plugins/create-marketplace#keep-the-entry-name-and-the-manifest-name-the-same) :

102 

103```json .claude-plugin/marketplace.json theme={null}

104{

105 "name": "your-marketplace",

106 "owner": { "name": "Your Name" },

107 "plugins": [

108 { "name": "deploy-helper", "source": "./" }

109 ]

110}

111```

112 

113Dans votre shell, exécutez `claude plugin validate .` dans le référentiel pour vérifier le fichier avant de le pousser.

114 

115[Créer une marketplace](/docs/fr/plugins/create-marketplace) couvre la disposition avec plusieurs plugins dans un référentiel.

116 

117<h3 id="control-who-can-install">

118 Contrôler qui peut installer

119</h3>

120 

121Quiconque peut cloner le référentiel peut installer à partir de celui-ci, donc si le référentiel est privé, la marketplace l'est aussi. Pour les hôtes autres qu'un référentiel git, voir [Héberger une marketplace](/docs/fr/plugins/host-marketplace). Pour atteindre tout le monde dans une entreprise, y compris les personnes qui n'utilisent pas git, voir [Déployer dans toute une entreprise](/docs/fr/plugins/host-marketplace#roll-out-to-a-whole-company).

122 

123<h3 id="tell-users-how-to-install">

124 Dire aux utilisateurs comment installer

125</h3>

126 

127Dites à vos utilisateurs d'ajouter la marketplace puis d'installer le plugin à partir de leur shell, en remplaçant la source et les noms par les vôtres :

128 

129* Ajouter la marketplace une fois : `claude plugin marketplace add your-org/your-marketplace`, où l'argument est un raccourci GitHub `owner/repo`, une URL ou un chemin

130* Installer le plugin : `claude plugin install deploy-helper@your-marketplace`

131* Ou faire les deux à partir d'une session : `/plugin install deploy-helper --marketplace your-org/your-marketplace`. Nécessite Claude Code v2.1.275 ou ultérieur. Voir [Ajouter une marketplace et installer en une commande](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command)

132 

133<h3 id="ship-updates-to-users">

134 Livrer les mises à jour aux utilisateurs

135</h3>

136 

137Les utilisateurs reçoivent une sortie lorsqu'ils la demandent ou lorsque la mise à jour automatique est activée pour votre marketplace :

138 

139* **Sur demande** : `claude plugin update deploy-helper@your-marketplace` dans le shell de l'utilisateur actualise la marketplace et installe la nouvelle copie lorsque la version de votre plugin a changé

140* **Mise à jour automatique** : désactivée par défaut pour votre marketplace. Voir [Activer la mise à jour automatique](/docs/fr/plugins/host-marketplace#turn-on-auto-update). Une fois activée, elle fait la même chose que `claude plugin update` avec un délai après le démarrage de la session

141 

142[Installer les plugins](/docs/fr/plugins/install) couvre les commandes du côté utilisateur, et [quand la mise à jour automatique s'exécute](/docs/fr/plugins/loading#when-auto-update-runs) couvre le timing.

143 

144<h2 id="submit-to-the-community-marketplace">

145 Soumettre à la marketplace communautaire

146</h2>

147 

148La marketplace communautaire d'Anthropic, `claude-community`, est la marketplace publique qui répertorie les plugins soumis via le formulaire de soumission du répertoire de plugins.

149 

150Les utilisateurs ajoutent la marketplace communautaire dans une session Claude Code avec `/plugin marketplace add anthropics/claude-plugins-community` et installent à partir de celle-ci comme `@claude-community`.

151 

152Pour savoir comment la marketplace communautaire diffère de la marketplace officielle, voir [Marketplaces d'Anthropic](/docs/fr/plugins/anthropic-marketplaces).

153 

154Pour soumettre votre plugin à la marketplace communautaire, utilisez l'un des formulaires intégrés à l'application :

155 

156* **claude.ai** : [claude.ai/admin-settings/directory/submissions/plugins/new](https://claude.ai/admin-settings/directory/submissions/plugins/new)

157* **Console** : [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

158 

159Le formulaire claude.ai nécessite une organisation Team ou Enterprise et la permission Directory, que les propriétaires détiennent par défaut. Les auteurs individuels qui ne font pas partie d'une organisation Team ou Enterprise peuvent utiliser le formulaire Console à la place.

160 

161Dans votre shell, exécutez `claude plugin validate ./your-plugin` localement avant de soumettre, en remplaçant `./your-plugin` par le chemin vers votre répertoire de plugins. Lorsque la validation réussit, Claude Code affiche `✔ Validation passed`, ou `✔ Validation passed with warnings` s'il y a des avertissements. Les avertissements ne font pas échouer la validation ; ajoutez `--strict` pour les traiter comme des erreurs.

162 

163Les plugins listés apparaissent dans le catalogue [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community), dans presque tous les cas épinglés à un SHA de commit spécifique.

164 

165Il peut y avoir un délai entre la soumission et l'apparition de votre plugin dans `marketplace.json`. Pour vérifier si votre plugin est installable, recherchez son nom dans le [catalogue communautaire](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json).

166 

167La marketplace officielle, `claude-plugins-official`, n'accepte pas les soumissions via ces formulaires. Si vous travaillez avec un contact partenaire d'Anthropic, demandez-lui un listing de marketplace officielle.

168 

169<h2 id="ship-updates-renames-and-removals">

170 Livrer les mises à jour, les renommages et les suppressions

171</h2>

172 

173<h3 id="release-a-new-version">

174 Sortir une nouvelle version

175</h3>

176 

177Si vous publiez via votre propre marketplace et que votre `plugin.json` définit `version`, incrémentez-la et poussez. Les utilisateurs qui exécutent `claude plugin update` ou qui ont la mise à jour automatique activée reçoivent alors la nouvelle version, comme décrit sous [Livrer les mises à jour aux utilisateurs](#ship-updates-to-users).

178 

179<h3 id="tag-a-release">

180 Étiqueter une sortie

181</h3>

182 

183Étiquetez la sortie dans git lorsque d'autres plugins déclarent une plage de version sur la vôtre, car ces plages se résolvent par rapport aux étiquettes. Sinon, vous n'avez pas besoin d'une étiquette.

184 

185Pour étiqueter, exécutez `claude plugin tag` dans votre shell à partir du répertoire du plugin. Elle crée une étiquette `{name}--v{version}`. Ajoutez `--push` pour envoyer l'étiquette à `origin`. La [référence `plugin tag`](/docs/fr/plugins/cli-reference#plugin-tag) répertorie ses drapeaux.

186 

187<h3 id="rename-or-remove-a-plugin">

188 Renommer ou supprimer un plugin

189</h3>

190 

191Ne modifiez jamais le `name` d'un plugin publié. Après un renommage, les utilisateurs qui l'ont déjà installé perdent le plugin, car leur installation est enregistrée sous l'ancien nom. Une entrée `renames` dans votre fichier marketplace les migre à la place. Modifiez `displayName` lorsque vous voulez un libellé différent.

192 

193Si un renommage est inévitable, utilisez la carte `renames` du fichier marketplace afin que les installations existantes migrent au lieu d'échouer avec [`Plugin "<name>" not found in marketplace`](/docs/fr/plugins/troubleshooting#plugin-not-found-in-marketplace). Pour supprimer un plugin de la marketplace, ou pour les détails complets de `renames`, voir [Renommer ou supprimer un plugin](/docs/fr/plugins/host-marketplace#rename-or-remove-a-plugin) sur la page d'hébergement. La [référence marketplace](/docs/fr/plugins/marketplace-reference#top-level-fields) a le champ.

194 

195<h2 id="declare-dependencies">

196 Déclarer les dépendances

197</h2>

198 

199Si votre plugin a besoin d'un autre plugin de la même marketplace pour être activé, listez-le dans le tableau `dependencies` de `plugin.json`. Chaque entrée est un nom nu ou un objet avec une plage de version semver `version`. Lorsqu'un utilisateur installe votre plugin, Claude Code installe et active également la dépendance.

200 

201[Dépendances des plugins](/docs/fr/plugins/dependencies) couvre la syntaxe de plage, les dépendances inter-marketplace et comment les utilisateurs élaguent les dépendances dont ils n'ont plus besoin.

202 

203<h2 id="next-steps">

204 Étapes suivantes

205</h2>

206 

207* [Héberger et maintenir une marketplace](/docs/fr/plugins/host-marketplace) : sortir de nouvelles versions et tenir les utilisateurs à jour

208* [Dépendances des plugins](/docs/fr/plugins/dependencies) : déclarer et versionner les plugins sur lesquels le vôtre dépend

209* [Recommander votre plugin depuis votre CLI](/docs/fr/plugins/cli-hints) : inviter les utilisateurs Claude Code de votre CLI à installer le plugin

210* [Mesurer le coût et l'utilisation des plugins](/docs/fr/plugins/measure) : voir ce que votre plugin coûte en contexte et si les gens l'utilisent

plugins/relevance.md +247 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Recommander des plugins pour votre organisation

6 

7> Ajoutez un bloc de pertinence aux entrées de plugins de la marketplace afin que Claude Code les suggère lorsque le travail d'un utilisateur correspond, et autorisez la marketplace dans les paramètres gérés.

8 

9Claude Code peut suggérer l'installation d'un plugin depuis la marketplace de votre organisation lorsque la session d'un utilisateur correspond aux signaux que vous définissez pour ce plugin. Les signaux incluent le répertoire de travail, les fichiers que Claude a lus et les commandes que Claude a exécutées. Vous les définissez en ajoutant un bloc `relevance` à l'entrée du plugin dans `marketplace.json`.

10 

11Un opérateur de marketplace écrit les entrées `relevance`. Un administrateur autorise ensuite la marketplace dans les paramètres gérés. Les utilisateurs ne voient aucune suggestion d'une marketplace tant qu'elle n'est pas autorisée.

12 

13<Note>

14 Ces cas sont couverts sur d'autres pages :

15 

16 * **Vous souhaitez installer des plugins** : consultez [Installer et gérer les plugins](/docs/fr/plugins/install)

17 * **Vous souhaitez désactiver les suggestions** : consultez [Comprendre le fonctionnement de la pertinence des plugins](#understand-how-plugin-relevance-works)

18</Note>

19 

20Commencez par les sections correspondant à votre rôle :

21 

22* **Opérateurs de marketplace** : lisez [comment fonctionnent les suggestions](#understand-how-plugin-relevance-works), puis [ajoutez la pertinence à une entrée de plugin](#add-relevance-to-a-plugin-entry) et [validez votre marketplace](#validate-your-marketplace)

23* **Administrateurs** : [activez les suggestions dans les paramètres gérés](#enable-suggestions-in-managed-settings)

24 

25<h2 id="understand-how-plugin-relevance-works">

26 Comprendre le fonctionnement de la pertinence des plugins

27</h2>

28 

29Chaque entrée de plugin dans `marketplace.json` peut inclure un objet `relevance`. L'objet nomme un sujet et un ou plusieurs signaux. Un signal est un motif que Claude Code teste par rapport à la session actuelle, comme le répertoire de travail ou les fichiers que Claude a lus.

30 

31La correspondance des signaux se fait localement sur la machine de l'utilisateur et n'ajoute aucun trafic réseau. Claude Code ne signale pas à Anthropic ou à l'opérateur de marketplace quels signaux ont correspondu ou leurs valeurs.

32 

33Lorsqu'un signal correspond et que le plugin n'est pas déjà installé, Claude Code suggère le plugin aux endroits suivants :

34 

35* **Spinner tip** : un message avec la commande `/plugin install` apparaît sous le spinner pendant que Claude répond.

36* **Notification au démarrage de la session** : si un signal `cwd` correspond au répertoire de travail, une notification d'une ligne apparaît avant que l'utilisateur n'envoie un premier message.

37* **Onglet Discover de `/plugin`** : le plugin est épinglé en haut de la liste Discover.

38 

39[Aperçu de ce que l'utilisateur voit](#preview-what-the-user-sees) montre le texte exact de chacun et la fréquence à laquelle ils se répètent.

40 

41Claude Code n'installe jamais le plugin automatiquement. L'utilisateur confirme toujours.

42 

43Le spinner tip et la notification au démarrage de la session cessent tous deux d'apparaître lorsque l'utilisateur ou le projet définit [`spinnerTipsEnabled`](/docs/fr/settings-reference#spinnertipsenabled) sur `false`, ou lorsqu'un [`spinnerTipsOverride`](/docs/fr/settings-reference#spinnertipsoverride) avec `excludeDefault` remplace les conseils intégrés. L'épingle de l'onglet Discover n'est affectée par aucun de ces paramètres.

44 

45<h2 id="add-relevance-to-a-plugin-entry">

46 Ajouter la pertinence à une entrée de plugin

47</h2>

48 

49Ajoutez un objet `relevance` à l'entrée du plugin dans votre `marketplace.json`. L'exemple suivant déclare que le plugin `terraform-helpers` est pertinent lorsque Claude lit un fichier `.tf` ou exécute `terraform` :

50 

51```json theme={null}

52{

53 "name": "your-marketplace",

54 "owner": { "name": "Your Org" },

55 "plugins": [

56 {

57 "name": "terraform-helpers",

58 "source": "./plugins/terraform-helpers",

59 "description": "Your organization's Terraform conventions and helpers",

60 "relevance": {

61 "topic": "Terraform",

62 "signals": {

63 "cli": ["terraform"],

64 "filesRead": ["**/*.tf"]

65 }

66 }

67 }

68 ]

69}

70```

71 

72Tant qu'aucun de ses signaux ne correspond, le plugin conserve sa position normale dans la liste Discover et n'apparaît pas comme un spinner tip.

73 

74Pour vérifier le bloc avant la publication, [validez votre marketplace](#validate-your-marketplace).

75 

76<h2 id="field-reference">

77 Référence des champs

78</h2>

79 

80L'objet `relevance` et son objet `signals` imbriqué acceptent les champs des tableaux suivants.

81 

82Les clients plus anciens chargent toujours une marketplace qui utilise des champs `relevance` qu'ils ne reconnaissent pas, car les champs inconnus sous `relevance` et `relevance.signals` sont ignorés au moment du chargement. Un champ reconnu dont la valeur dépasse sa limite dans la [référence des champs](#field-reference) invalide l'entrée de plugin entière, et les utilisateurs ne peuvent pas installer ce plugin depuis la marketplace tant que vous ne le corrigez pas ; `claude plugin validate` signale les mêmes limites.

83 

84<h3 id="relevance">

85 `relevance`

86</h3>

87 

88| Champ | Type | Description |

89| :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

90| `topic` | string | Optionnel. La phrase qui remplit « Travail avec *topic* ? » dans le spinner tip. Par défaut, le nom du plugin avec chaque segment de tiret en majuscules. Maximum 64 caractères. |

91| `signals` | object | Les correspondances qui déterminent quand le plugin est pertinent. Claude Code suggère le plugin uniquement si au moins un signal est défini. Consultez [`relevance.signals`](#relevance-signals). |

92 

93Le `topic` est souvent le nom du produit, par exemple `Terraform`. Utilisez un domaine tel que `design` lorsque le nom du plugin ne semble pas naturel comme sujet.

94 

95<h3 id="relevance-signals">

96 `relevance.signals`

97</h3>

98 

99L'objet `signals` accepte les champs suivants.

100 

101| Champ | Type | Description | Limite |

102| :------------- | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------- |

103| `cwd` | array of strings | Motifs Glob correspondant au répertoire de travail de la session. Consultez [correspondance du répertoire de travail](#working-directory-matching). | 10 motifs de 256 caractères chacun |

104| `cli` | array of strings | Noms de commandes des commandes shell que Claude a exécutées cette session, par exemple `["terraform"]`. Correspondance exacte. Consultez [correspondance des noms de commandes](#command-name-matching). | 10 entrées de 64 caractères chacune |

105| `hosts` | array of strings | Noms d'hôtes vus dans les URL `http://` ou `https://` dans les commandes Bash cette session, par exemple `["registry.terraform.io"]`. Nom d'hôte nu en minuscules uniquement : pas de schéma, port ou chemin. Correspondance exacte insensible à la casse. | 20 entrées de 128 caractères chacune |

106| `filesRead` | array of strings | Motifs Glob correspondant aux chemins des fichiers que Claude a lus cette session, par exemple `["**/*.tf"]`. Normalisé par barre oblique avant et insensible à la casse. | 10 motifs de 256 caractères chacun |

107| `manifestDeps` | array of objects | Dépendances déclarées dans les manifestes de packages que Claude a lus cette session. Chaque entrée est `{ "file": "...", "pattern": "..." }`, où les deux valeurs sont des expressions régulières. Consultez [correspondance des dépendances de manifeste](#manifest-dependency-matching). | 10 entrées, chaque valeur au maximum 256 caractères. Les fichiers de manifeste plus grands que 512 Ko sont ignorés |

108 

109Les signaux `filesRead` et `manifestDeps` correspondent également aux fichiers que Claude a écrits ou modifiés cette session et aux fichiers de mémoire `CLAUDE.md` chargés automatiquement du projet.

110 

111<h4 id="working-directory-matching">

112 Correspondance du répertoire de travail

113</h4>

114 

115`cwd` est le seul signal qui peut correspondre au démarrage de la session, avant que l'utilisateur n'envoie un premier message.

116 

117Claude Code correspond à chaque motif `cwd` comme suit :

118 

119* Le motif est comparé au répertoire de travail en tant que chemin absolu. Lorsque la session se trouve dans un référentiel git, il est également comparé au chemin du répertoire de travail par rapport à la racine du référentiel.

120* La correspondance est normalisée par barre oblique avant et insensible à la casse.

121* Chaque motif correspond au répertoire lui-même et à tout ce qui se trouve sous lui, donc `infra`, `infra/` et `infra/**` se comportent de manière identique.

122 

123<h4 id="command-name-matching">

124 Correspondance des noms de commandes

125</h4>

126 

127Claude Code enregistre un nom de commande pour chaque commande shell que Claude exécute : le premier jeton après toute assignation de variable d'environnement de début et `sudo`. Les commandes composées ne contribuent que leur commande de début, donc `cd infra && terraform plan` enregistre `cd`, pas `terraform`.

128 

129<h4 id="manifest-dependency-matching">

130 Correspondance des dépendances de manifeste

131</h4>

132 

133Chaque entrée `manifestDeps` associe deux chaînes source JavaScript `RegExp` :

134 

135* `file` : comparée insensible à la casse au chemin du fichier de manifeste. Le chemin est généralement absolu, donc ancrez le motif à la fin plutôt qu'au début. Les chemins ne sont pas normalisés par séparateur pour ce signal, donc les chemins Windows utilisent des barres obliques inverses.

136* `pattern` : comparée sensible à la casse au contenu de ce fichier.

137 

138L'exemple suivant utilise `manifestDeps` pour suggérer votre plugin une fois que Claude a lu un `package.json` qui dépend du package npm de votre SDK, nommé `your-sdk` ici.

139 

140```json theme={null}

141{

142 "name": "your-plugin",

143 "source": "./plugins/your-plugin",

144 "relevance": {

145 "signals": {

146 "manifestDeps": [

147 {

148 "file": "[/\\\\]package\\.json$",

149 "pattern": "\"your-sdk\"\\s*:"

150 }

151 ]

152 }

153 }

154}

155```

156 

157Dans cet exemple, le motif `file` utilise `[/\\\\]` pour qu'il corresponde à la fois aux séparateurs de chemin barre oblique avant et barre oblique inverse, et `\\.` pour que le point soit littéral. En JSON, chaque barre oblique inverse dans l'expression régulière est écrite deux fois.

158 

159<h2 id="validate-your-marketplace">

160 Valider votre marketplace

161</h2>

162 

163Dans votre shell, exécutez `claude plugin validate` sur votre répertoire de marketplace pour vérifier le bloc `relevance` avant la publication :

164 

165```bash theme={null}

166claude plugin validate ./my-marketplace

167```

168 

169Le validateur signale les erreurs et les avertissements sur le bloc `relevance`, y compris ceux-ci :

170 

171* Signale les clés inconnues sous `relevance` et `relevance.signals` comme des avertissements

172* Signale une valeur `relevance` qui n'est pas un objet

173* Rejette une entrée `signals.hosts` qui inclut un schéma, un port ou un chemin

174 

175Chaque résultat s'affiche avec le chemin du champ qu'il concerne, et la sortie se termine par `Validation passed`, `Validation passed with warnings` ou `Validation failed`.

176 

177<h2 id="enable-suggestions-in-managed-settings">

178 Activer les suggestions dans les paramètres gérés

179</h2>

180 

181Les utilisateurs ne voient aucune suggestion d'une marketplace tant qu'un administrateur ne l'autorise pas dans les [paramètres gérés](/docs/fr/plugins/org), même lorsque son `marketplace.json` déclare `relevance`.

182 

183Pour autoriser une marketplace, modifiez vos paramètres gérés comme suit :

184 

185* Ajoutez le nom de la marketplace à `pluginSuggestionMarketplaces`.

186* Pour toute marketplace autre que la marketplace officielle d'Anthropic, déclarez également la source de la marketplace, soit comme entrée de ce nom dans [`extraKnownMarketplaces`](/docs/fr/plugins/org#require-a-marketplace-and-its-plugins), soit comme entrée dans [`strictKnownMarketplaces`](/docs/fr/plugins/org#allowlist-with-strictknownmarketplaces).

187 

188Sur une machine où la marketplace n'est pas enregistrée, ou est enregistrée sous le nom autorisé à partir d'une source différente, aucune suggestion de celle-ci n'apparaît. La vérification de la source empêche une source non liée de s'enregistrer sous un nom autorisé pour que ses plugins soient suggérés dans toute votre organisation.

189 

190Le `managed-settings.json` suivant enregistre une marketplace d'organisation à partir d'un référentiel GitHub et active ses suggestions :

191 

192```json theme={null}

193{

194 "extraKnownMarketplaces": {

195 "your-marketplace": {

196 "source": {

197 "source": "github",

198 "repo": "your-org/your-marketplace"

199 }

200 }

201 },

202 "pluginSuggestionMarketplaces": ["your-marketplace"]

203}

204```

205 

206Le nom de la marketplace officielle ne peut s'enregistrer que depuis la source Anthropic officielle, il n'a donc besoin d'aucune déclaration de source. Pour la marketplace officielle, autorisez le nom seul :

207 

208```json theme={null}

209{

210 "pluginSuggestionMarketplaces": ["claude-plugins-official"]

211}

212```

213 

214<h2 id="preview-what-the-user-sees">

215 Aperçu de ce que l'utilisateur voit

216</h2>

217 

218Lorsque le signal `relevance` d'un plugin correspond pendant une session, le conseil sous le spinner se lit comme suit :

219 

220```text theme={null}

221Working with Terraform? Install the terraform-helpers plugin:

222/plugin install terraform-helpers@your-marketplace

223```

224 

225Lorsqu'un signal `cwd` correspond au démarrage de la session, la notification d'une ligne se lit comme suit :

226 

227```text theme={null}

228plugin suggestion: terraform-helpers@your-marketplace · /plugin

229```

230 

231Dans l'onglet Discover de `/plugin`, le plugin est épinglé au-dessus des autres résultats avec une annotation qui nomme le signal correspondant, tel que `suggested for this directory` ou `suggested for terraform commands`.

232 

233Claude Code limite la fréquence à laquelle il suggère un plugin donné :

234 

235* La suggestion apparaît au maximum une fois tous les trois sessions, combinant le conseil du spinner et la notification de démarrage de session.

236* La notification de démarrage de session cesse d'apparaître une fois que le conseil du spinner et la notification ont montré le plugin un total combiné de deux fois.

237* Ni le conseil du spinner ni la notification de démarrage de session ne se répètent une fois que le plugin est installé.

238* L'onglet Discover épingle le plugin la première fois que l'utilisateur ouvre l'onglet tandis que les signaux du plugin correspondent. Claude Code enregistre cela dans `~/.claude.json`, de sorte que chaque fois ultérieure que l'utilisateur ouvre `/plugin` sur cette machine, le plugin apparaît dans l'ordre normal.

239 

240<h2 id="see-also">

241 Voir aussi

242</h2>

243 

244* [Héberger une marketplace](/docs/fr/plugins/host-marketplace) : exécutez la marketplace qui héberge vos plugins

245* [Référence de marketplace](/docs/fr/plugins/marketplace-reference#plugin-entries) : chaque champ qu'une entrée de plugin accepte

246* [Recommander votre plugin depuis votre CLI](/docs/fr/plugins/cli-hints) : invitez les utilisateurs depuis votre propre CLI au lieu des signaux de session de Claude Code

247* [Gérer les plugins pour votre organisation](/docs/fr/plugins/org) : `extraKnownMarketplaces`, `strictKnownMarketplaces` et le reste des clés de politique de plugins

plugins/security.md +186 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Sécurité et confiance des plugins

6 

7> Décidez si vous faites confiance à un plugin avant de l'installer, de ce qu'un plugin peut faire sur votre machine à la façon de l'examiner et de le supprimer.

8 

9Un plugin Claude Code que vous installez peut exécuter du code arbitraire sur votre machine avec vos privilèges utilisateur.

10 

11Vous installez un plugin à partir d'une marketplace, qui est le catalogue que Claude Code récupère. Certains noms de marketplace sont [réservés aux propres marketplaces d'Anthropic](#marketplace-tiers), et toute autre marketplace est tierce. Le nom d'une marketplace vous indique qui publie le catalogue, pas ce que chaque plugin qu'elle contient fait, donc [examinez un plugin avant de l'installer](#review-a-plugin-before-you-install) quelle que soit la marketplace d'où il provient.

12 

13Lisez cette page si vous décidez d'installer un plugin, ou si vous examinez les outils avant que votre équipe puisse les utiliser.

14 

15<Note>

16 Ces cas sont couverts sur d'autres pages :

17 

18 * **Modèle de sécurité propre de Claude Code** : voir [Sécurité](/docs/fr/security)

19 * **Restriction ou obligation des plugins pour une organisation** : voir [Gérer les plugins pour votre organisation](/docs/fr/plugins/org)

20 * **Les plugins `security-guidance` ou `claude-security`** : cette page ne concerne pas ces plugins. Voir [`security-guidance`](/docs/fr/security-guidance) et [`claude-security`](/docs/fr/claude-security)

21</Note>

22 

23Commencez par [ce qu'un plugin peut faire](#understand-what-a-plugin-can-do) et [quelles marketplaces sont celles d'Anthropic](#marketplace-tiers), puis [examinez le plugin avant de l'installer](#review-a-plugin-before-you-install).

24 

25<h2 id="understand-what-a-plugin-can-do">

26 Comprendre ce qu'un plugin peut faire

27</h2>

28 

29Un plugin peut contenir du contenu qui exécute du code sur votre machine avec vos privilèges utilisateur et du contenu qui entre dans le contexte de Claude en tant qu'instructions, donc [examinez un plugin avant de l'installer](#review-a-plugin-before-you-install). Voici ce qu'un plugin installé peut faire :

30 

31* **Hooks** : les [hooks](/docs/fr/hooks) d'un plugin s'exécutent en tant que commandes shell à des points du cycle de vie de Claude Code, comme avant ou après un appel d'outil.

32* **Serveurs MCP et LSP** : Claude Code se connecte aux [serveurs MCP](/docs/fr/mcp) qu'un plugin activé déclare et donne à Claude leurs outils. Un serveur MCP stdio s'exécute en tant que processus que Claude Code démarre sur votre machine. Claude Code démarre également les serveurs de langage que le plugin déclare.

33* **Répertoire `bin/`** : Claude Code ajoute le répertoire `bin/` de chaque plugin activé au `PATH` du shell de l'outil Bash, afin que les commandes Bash de Claude puissent exécuter n'importe quel exécutable qui s'y trouve.

34* **Skills, commandes et agents** : ceux-ci entrent dans le contexte de Claude en tant qu'instructions, ils influencent donc ce que Claude fait avec les outils qu'il a déjà.

35* **Mises à jour** : quand la mise à jour automatique est activée pour la marketplace à partir de laquelle vous avez installé un plugin, Claude Code met à jour ce plugin en arrière-plan, donc les fichiers que vous avez examinés peuvent changer sur le disque. [Quand la mise à jour automatique s'exécute](/docs/fr/plugins/loading#when-auto-update-runs) indique le calendrier. Pour activer ou désactiver la mise à jour automatique par marketplace, voir [Garder les plugins à jour](/docs/fr/plugins/install#keep-plugins-updated).

36 

37Les [règles de permission](/docs/fr/permissions) et le [sandbox](/docs/fr/sandboxing) de Claude Code couvrent les appels d'outils que Claude fait, pas le code qu'un plugin exécute par lui-même :

38 

39* **Hooks et processus serveur** : les hooks de commande exécutent des commandes shell avec vos permissions utilisateur complètes. Claude Code exécute les hooks et les serveurs MCP en dehors du sandbox.

40* **Appels d'outils de Claude** : un appel à l'un des outils MCP du plugin, et une commande Bash qui exécute un exécutable du `bin/` du plugin, sont des appels d'outils, donc vos règles de permission s'y appliquent.

41 

42L'installation d'un plugin l'active également, sauf si son manifeste ou son entrée de marketplace définit [`defaultEnabled: false`](/docs/fr/plugins/install#choose-an-install-scope) et que vous ne l'avez pas activé vous-même.

43 

44Pour supprimer un plugin auquel vous ne faites plus confiance, voir [Supprimer un plugin auquel vous ne faites plus confiance](#remove-a-plugin-you-no-longer-trust).

45 

46<h2 id="marketplace-tiers">

47 Identifier les marketplaces d'Anthropic par nom

48</h2>

49 

50Le nom d'une marketplace la place dans l'un des trois niveaux : officiel, communautaire ou tiers. Claude Code n'accepte les noms officiels et communautaires que pour les marketplaces provenant de repositories `github.com/anthropics/`, donc une marketplace tierce ne peut pas se présenter comme une marketplace d'Anthropic. Une marketplace qu'un collègue ou votre organisation publie est tierce.

51 

52Le tableau liste les noms qui se situent dans chaque niveau :

53 

54| Niveau | Quelles marketplaces |

55| :------------ | :------------------------------------------------------------------------------------------------ |

56| Officiel | Les [noms de marketplace officiels](#official-marketplace-names), comme `claude-plugins-official` |

57| Communautaire | `claude-community`, `claude-plugins-community`, et `healthcare` |

58| Tiers | Toute autre marketplace |

59 

60Quand le catalogue `claude-community` épingle un plugin à un SHA de commit, ce qu'il fait pour presque chaque entrée, Claude Code refuse d'installer un commit différent.

61 

62<h3 id="official-marketplace-names">

63 Noms de marketplace officiels

64</h3>

65 

66Ces noms de marketplace constituent le niveau officiel :

67 

68* `claude-plugins-official`

69* `claude-code-marketplace`

70* `claude-code-plugins`

71* `anthropic-marketplace`

72* `anthropic-plugins`

73* `agent-skills`

74* `anthropic-agent-skills`

75* `life-sciences`

76* `knowledge-work-plugins`

77* `claude-for-legal`

78* `claude-for-financial-services`

79* `financial-services-plugins`

80* `first-party-plugins`

81* `claude-tag-plugins`

82 

83Pour savoir comment les marketplaces officielles, communautaires et de démonstration diffèrent et où parcourir ce que chacune liste, voir [Les marketplaces d'Anthropic](/docs/fr/plugins/anthropic-marketplaces).

84 

85<h2 id="review-a-plugin-before-you-install">

86 Examiner un plugin avant de l'installer

87</h2>

88 

89Avant d'installer un plugin, regardez ce qu'il ajoute et d'où il provient.

90 

91<Steps>

92 <Step title="Vérifier la source de la marketplace">

93 Dans votre shell, exécutez `claude plugin marketplace list` pour imprimer la source à partir de laquelle chaque marketplace a été ajoutée, comme un repository GitHub ou un répertoire.

94 </Step>

95 

96 <Step title="Lire le volet de détails">

97 Dans une session Claude Code, exécutez `/plugin` et sélectionnez le plugin. Le volet de détails affiche une section **Will install** (Sera installé) listant les commandes, agents, skills, hooks et serveurs MCP et LSP du plugin. Pour un plugin pour lequel Anthropic n'a pas publié de données de composant, la section affiche ce que l'entrée de marketplace déclare, ou une note : `Components will be discovered at installation` (Les composants seront découverts à l'installation) pour un plugin stocké dans la marketplace, ou `Component summary not available for remote plugin` (Résumé des composants non disponible pour le plugin distant) pour un plugin récupéré ailleurs.

98 </Step>

99 

100 <Step title="Lire la source du plugin">

101 Dans le volet de détails, sélectionnez **Open homepage** (Ouvrir la page d'accueil) ou **View on GitHub** (Voir sur GitHub) sous les options d'installation. Si le volet n'offre ni l'un ni l'autre, ouvrez le repository de marketplace que vous avez trouvé à la première étape. Trouvez le répertoire du plugin là-bas. La section **Will install** (Sera installé) montre qu'un hook existe mais pas ce qu'il exécute, donc lisez ces fichiers dans le répertoire du plugin :

102 

103 * **`hooks/hooks.json`** : la commande que chaque hook exécute

104 * **`.mcp.json`** : la commande ou l'URL de chaque serveur

105 * **`bin/`** : chaque fichier du répertoire

106 </Step>

107 

108 <Step title="Lister ce que le plugin contient">

109 Clonez le repository qui contient le répertoire du plugin, puis exécutez `claude --plugin-dir <plugin directory> plugin details <plugin name>` dans votre shell pour voir ce que Claude Code trouve dedans. La commande lit les fichiers du plugin sans démarrer une session et imprime un `Component inventory` (Inventaire des composants) listant les skills et commandes du plugin, les agents, les hooks avec l'événement de chaque hook, et les serveurs MCP et LSP.

110 </Step>

111</Steps>

112 

113Après avoir installé un plugin, exécutez `claude plugin details <plugin name>` dans votre shell pour imprimer le même `Component inventory` (Inventaire des composants) pour la copie installée sous `~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/`.

114 

115<h3 id="remove-a-plugin-you-no-longer-trust">

116 Supprimer un plugin auquel vous ne faites plus confiance

117</h3>

118 

119Dans votre shell, exécutez [`claude plugin uninstall <plugin>`](/docs/fr/plugins/cli-reference#plugin-uninstall) avec le `--scope` auquel vous l'avez installé. Ensuite, vérifiez ce que la désinstallation a supprimé et ce qu'elle a laissé :

120 

121* **Données persistantes** : quand c'était le dernier scope auquel le plugin était installé, la désinstallation supprime également le répertoire de données persistantes du plugin, sauf si vous passez `--keep-data`.

122* **Fichiers en cache** : les fichiers du plugin restent sur le disque sous `~/.claude/plugins/cache/` pendant 14 jours avant qu'un [balayage en arrière-plan les supprime](/docs/fr/plugins/loading#cleanup-of-previous-versions). Après avoir désinstallé votre dernier plugin, les répertoires orphelins restent jusqu'à ce que vous en installiez un autre. Pour supprimer les fichiers maintenant, supprimez vous-même le répertoire du plugin sous `~/.claude/plugins/cache/<marketplace>/<plugin>/`.

123* **La marketplace** : si vous ne faites pas confiance au propriétaire de la marketplace non plus, [supprimez la marketplace](/docs/fr/plugins/install#manage-marketplaces) aussi, ce qui désinstalle chaque plugin que vous avez installé à partir de celle-ci.

124 

125<h2 id="recognize-when-claude-code-refuses-or-warns">

126 Reconnaître quand Claude Code refuse ou avertit

127</h2>

128 

129Le volet de détails que vous ouvrez à partir de l'onglet **Discover** (Découvrir) ou **Marketplaces** dans `/plugin` affiche le même avertissement de confiance pour chaque plugin. Claude Code refuse au lieu d'avertir dans des cas comme ceux sous [Sources de marketplace non fiables et vérifications d'intégrité échouées](#untrusted-marketplace-sources-and-failed-integrity-checks).

130 

131<h3 id="trust-warning-before-you-install">

132 Avertissement de confiance avant l'installation

133</h3>

134 

135L'avertissement lit la même chose quelle que soit la marketplace d'où provient le plugin :

136 

137```text theme={null}

138Make sure you trust a plugin before installing, updating, or using it. Anthropic does not control what MCP servers, files, or other software are included in plugins and cannot verify that they will work as intended or that they won't change. See each plugin's homepage for more information.

139```

140 

141Si votre organisation définit `pluginTrustMessage` dans [les paramètres gérés](/docs/fr/plugins/org), Claude Code ajoute ce texte à l'avertissement.

142 

143<h3 id="untrusted-marketplace-sources-and-failed-integrity-checks">

144 Sources de marketplace non fiables et vérifications d'intégrité échouées

145</h3>

146 

147Claude Code refuse de charger une marketplace ou d'installer un plugin dans ces cas, chacun avec son propre message d'erreur :

148 

149* **Source de marketplace non fiable** : quand une marketplace utilise un nom officiel ou communautaire mais que sa source est en dehors de `github.com/anthropics/`, Claude Code arrête le chargement de la marketplace et les plugins que vous avez installés à partir de celle-ci. L'erreur est [Marketplace is registered from an untrusted source](/docs/fr/errors#marketplace-is-registered-from-an-untrusted-source).

150* **Intégrité de l'archive** : quand une entrée de marketplace épingle une [source `archive`](/docs/fr/plugins/marketplace-reference#archive-plugin-source) à un digest `sha256` et que le digest du fichier téléchargé ne correspond pas, Claude Code refuse l'installation. L'erreur est [Plugin archive integrity check failed](/docs/fr/errors#plugin-archive-integrity-check-failed).

151 

152L'épingle `sha256` est séparée de l'épingle de commit SHA du catalogue communautaire, qui sélectionne le commit git à extraire.

153 

154<h2 id="enforce-plugin-controls-for-your-organization">

155 Appliquer les contrôles de plugin pour votre organisation

156</h2>

157 

158Avec les [paramètres gérés](/docs/fr/plugins/org), un administrateur peut appliquer ces contrôles de plugin :

159 

160* Lister en blanc ou en noir les sources de marketplace

161* Forcer l'activation des plugins

162* Désactiver les drapeaux `--plugin-dir` et `--plugin-url` et la variable `CLAUDE_CODE_PLUGIN_DIRS`

163* Limiter les hooks à ceux des paramètres gérés et des plugins activés de force

164* Empêcher les plugins des comptes claude.ai des membres de se charger dans Claude Code, avec [`syncClaudeAiPlugins`](/docs/fr/plugins/org#control-matrix)

165 

166La [matrice de contrôle](/docs/fr/plugins/org#control-matrix) indique ce que chaque clé fait et ne couvre pas.

167 

168<h2 id="find-plugins-in-telemetry">

169 Trouver les plugins dans la télémétrie

170</h2>

171 

172Si votre organisation exporte les événements [OpenTelemetry](/docs/fr/monitoring-usage) de Claude Code vers son propre backend, les [niveaux de marketplace](#marketplace-tiers) décident quels noms de plugin y apparaissent :

173 

174* **[Événement Plugin loaded](/docs/fr/monitoring-usage#plugin-loaded-event)** : l'événement rapporte les noms de plugin et de marketplace du niveau officiel tels qu'ils sont. Pour les niveaux communautaire et tiers, `plugin.name` et `marketplace.name` sont la chaîne littérale `third-party` sauf si vous définissez `OTEL_LOG_TOOL_DETAILS=1`.

175* **Scope du plugin** : le `plugin.scope` de l'événement chargé rapporte toujours d'où provient le plugin, comme `org` pour un plugin que vos paramètres gérés activent ou `user-local` pour tout autre plugin tiers. L'[événement Plugin loaded](/docs/fr/monitoring-usage#plugin-loaded-event) liste chaque valeur.

176* **[Événement Plugin installed](/docs/fr/monitoring-usage#plugin-installed-event)** : sauf si vous définissez `OTEL_LOG_TOOL_DETAILS=1`, l'événement omet les champs de nom pour les plugins non officiels au lieu de rapporter `third-party`.

177* **[API Claude Code Analytics](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list)** : Claude Code rapporte les plugins des niveaux officiel et communautaire par nom et rapporte chaque autre plugin comme `third-party`.

178 

179<h2 id="next-steps">

180 Étapes suivantes

181</h2>

182 

183* [Gérer les plugins pour votre organisation](/docs/fr/plugins/org) : restreindre les marketplaces à partir desquelles les utilisateurs peuvent installer et exiger celles auxquelles vous faites confiance

184* [Installer et gérer les plugins](/docs/fr/plugins/install) : examinez le volet de détails d'un plugin avant de choisir un scope

185* [Les marketplaces d'Anthropic](/docs/fr/plugins/anthropic-marketplaces) : quels noms de marketplace sont ceux d'Anthropic

186* [Sécurité](/docs/fr/security) : le propre modèle de sécurité de Claude Code

plugins/troubleshooting.md +1064 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Dépanner les plugins

6 

7> Corrigez les erreurs de plugins dans Claude Code. Trouvez le message exact que vous avez vu, regroupé par étape depuis l'exécution de /plugin jusqu'à l'installation et la politique organisationnelle.

8 

9Cette page répertorie les messages d'erreur et les symptômes des plugins Claude Code et des marketplaces, les catalogues à partir desquels Claude Code installe les plugins. Chaque entrée indique la cause, une solution et ce que vous voyez une fois la correction appliquée.

10 

11Lorsqu'un message nomme un plugin ou une marketplace, l'entrée affiche un espace réservé tel que `<name>` à la place.

12 

13Utilisez cette page que vous installiez des plugins, les construisiez, hébergiez une marketplace ou administriez des plugins pour une organisation.

14 

15<Note>

16 Ces cas sont couverts sur d'autres pages :

17 

18 * **Pourquoi les portées, le cache et la précédence se comportent de cette façon** : lisez [Référence du chargement des plugins](/docs/fr/plugins/loading)

19 * **Recherche d'un drapeau, d'un champ ou d'une commande** : utilisez la [référence des commandes de plugin](/docs/fr/plugins/cli-reference), la [référence du manifeste](/docs/fr/plugins/manifest-reference) ou la [référence de la marketplace](/docs/fr/plugins/marketplace-reference)

20</Note>

21 

22Recherchez le message exact que vous avez vu. Chaque message est répertorié sous l'étape qui le produit, ce qui n'est pas toujours la commande que vous avez exécutée. Par exemple, une installation peut échouer parce qu'une marketplace est manquante, donc ce message se trouve sous [Ajouter une marketplace](#add-a-marketplace).

23 

24<h2 id="find-where-/plugin-runs">

25 Trouvez où `/plugin` s'exécute

26</h2>

27 

28`/plugin` est une commande que vous tapez dans une session de terminal Claude Code en cours d'exécution, et elle ouvre un panneau interactif. Les entrées de cette section couvrent les endroits où vous pouvez la taper mais elle ne peut pas s'exécuter, et les orthographes de commande qui n'existent pas.

29 

30<h3 id="plugin-isnt-available-in-this-environment">

31 `/plugin isn't available in this environment`

32</h3>

33 

34Vous avez tapé `/plugin` quelque part en dehors d'une session de terminal Claude Code, et Claude a répondu avec cette ligne au lieu d'ouvrir quoi que ce soit.

35 

36Vous recevez cette réponse dans une session qui n'a pas de terminal pour dessiner le panneau `/plugin` : [mode non interactif](/docs/fr/headless) avec `claude -p`, le SDK Agent, l'onglet Code de l'application de bureau Claude, le panneau de l'extension VS Code et le navigateur à claude.ai/code.

37 

38Dans le panneau de l'extension VS Code, seule une ligne `/plugin` avec quelque chose après, comme `/plugin install <plugin>@<marketplace>`, reçoit cette réponse. `/plugin` ou `/plugins` tapé seul ouvre la boîte de dialogue **Gérer les plugins**.

39 

40Installez le plugin à partir de la surface sur laquelle vous vous trouvez à la place :

41 

42* **Application de bureau Claude, session locale ou SSH** : cliquez sur le bouton **+** à côté de l'invite, puis **Plugins**, puis **Ajouter un plugin** pour ouvrir le [navigateur de plugins](/docs/fr/desktop#install-plugins)

43* **Extension VS Code** : utilisez l'onglet **VS Code** sous [Installer un plugin](/docs/fr/plugins/install#install-a-plugin)

44* **Claude Code sur le web, ou une session cloud de bureau** : une session cloud n'a pas de navigateur de plugins. Consultez l'onglet **Session cloud** sous [Installer un plugin](/docs/fr/plugins/install#install-a-plugin) pour voir ce qu'une session cloud charge

45* **Un terminal auquel vous avez accès** : exécutez `claude` et tapez `/plugin` là, ou exécutez `claude plugin install <plugin>@<marketplace>` dans votre shell sans démarrer une session

46 

47Lorsqu'une installation de terminal fonctionne, `/plugin` imprime un résumé d'installation qui commence par `✓ Installed <plugin>.` et `claude plugin install` imprime `Successfully installed plugin: <plugin>@<marketplace>`.

48 

49<h3 id="zsh-no-such-file-or-directory-plugin">

50 `zsh: no such file or directory: /plugin`

51</h3>

52 

53Vous avez tapé `/plugin ...` à une invite de shell, et le shell a signalé qu'aucun fichier nommé `/plugin` n'existe. Bash signale `bash: /plugin: No such file or directory`.

54 

55`/plugin` est une commande que vous tapez dans une session Claude Code, pas à l'invite du shell. Démarrez une session et tapez la même commande là :

56 

57```shell theme={null}

58claude

59```

60 

61Ensuite, à l'invite Claude Code :

62 

63```text theme={null}

64/plugin install <plugin>@<marketplace>

65```

66 

67Une installation réussie imprime un résumé qui commence par `✓ Installed <plugin>.` Si l'installation elle-même échoue ensuite, son message se trouve sous [Ajouter une marketplace](#add-a-marketplace) ou [Installer un plugin](#install-a-plugin).

68 

69Pour installer à partir du shell sans démarrer une session, exécutez `claude plugin install <plugin>@<marketplace>` à la place.

70 

71<h3 id="the-term-plugin-is-not-recognized-as-the-name-of-a-cmdlet">

72 `The term '/plugin' is not recognized as the name of a cmdlet`

73</h3>

74 

75Vous avez tapé `/plugin ...` à une invite PowerShell, et `/plugin` est une commande Claude Code, pas un programme. Bash et Zsh signalent [leur propre forme de cette erreur](#zsh-no-such-file-or-directory-plugin).

76 

77Utilisez plutôt l'une de ces options :

78 

79* Exécutez `claude`, puis tapez `/plugin` à l'invite Claude Code

80* Exécutez `claude plugin install <plugin>@<marketplace>` dans PowerShell sans démarrer une session

81 

82<h3 id="claude-command-not-found-after-claude-plugin">

83 `claude: command not found` après `claude plugin ...`

84</h3>

85 

86Vous avez exécuté `claude plugin install ...` dans votre shell, et le shell n'a pas pu trouver `claude` du tout. Sur Windows, le message est `'claude' is not recognized as the name of a cmdlet` ou `'claude' is not recognized as an internal or external command`.

87 

88La cause n'est pas la commande de plugin. Soit Claude Code n'est pas installé, soit son répertoire d'installation n'est pas sur votre `PATH` dans ce shell. Suivez [`command not found: claude` après l'installation](/docs/fr/troubleshoot-install#command-not-found-claude-after-installation), puis réessayez la commande de plugin.

89 

90<h3 id="unknown-command-and-command-spellings-that-dont-exist">

91 `Unknown command` et orthographes de commande qui n'existent pas

92</h3>

93 

94Vous avez tapé une commande de plugin que vous avez vue quelque part et avez obtenu `Unknown command: /<name>` dans une session, ou `error: unknown command '<name>'` ou `error: unknown option '<flag>'` du binaire `claude` dans votre shell.

95 

96Plusieurs orthographes de commande sont en usage que Claude Code n'a pas. Le tableau ci-dessous mappe chacune à la vraie commande. La [référence des commandes de plugin](/docs/fr/plugins/cli-reference) répertorie chaque sous-commande et drapeau.

97 

98| Vous avez tapé | Ce que Claude Code dit | Utilisez plutôt |

99| :----------------------------------------- | :--------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |

100| `claude plugin add <source>` | `error: unknown command 'add'` | `claude plugin marketplace add <source>` pour ajouter une marketplace, ou `claude plugin install <plugin>@<marketplace>` pour installer un plugin |

101| `claude plugin install <plugin> --project` | `error: unknown option '--project'` | `claude plugin install <plugin>@<marketplace> --scope project` |

102| `/install <plugin>` | `Unknown command: /install` | `/plugin install <plugin>@<marketplace>` |

103| `/plugin add <source>` | Le panneau `/plugin` s'ouvre sur l'onglet **Discover** | `/plugin marketplace add <source>` |

104| `marketplace.anthropic.com` comme source | `Invalid marketplace source format. Try: owner/repo, https://..., or ./path` | `anthropics/claude-plugins-official` pour la marketplace officielle |

105 

106Ces orthographes semblent incorrectes mais fonctionnent :

107 

108* `claude plugins` est un alias de `claude plugin`

109* `claude plugin remove` est un alias de `claude plugin uninstall`

110* `/plugins` et `/marketplace` dans une session ouvrent le même panneau que `/plugin`

111 

112<h2 id="add-a-marketplace">

113 Ajouter une marketplace

114</h2>

115 

116Une marketplace est un catalogue que vous ajoutez à Claude Code à partir d'un référentiel git, d'une URL ou d'un chemin local. Ces entrées couvrent les messages que vous recevez lorsque l'ajout échoue ou qu'une actualisation ultérieure échoue.

117 

118<h3 id="marketplace-claude-plugins-official-not-found">

119 `Marketplace "claude-plugins-official" not found`

120</h3>

121 

122Vous avez exécuté `/plugin install <plugin>@claude-plugins-official` dans une session, et Claude Code a signalé qu'il n'a pas de marketplace portant ce nom.

123 

124La marketplace officielle n'est pas encore enregistrée sur cette machine. Claude Code l'enregistre normalement de lui-même la première fois que vous démarrez une session de terminal interactif. Elle n'a pas encore fonctionné si vous n'avez utilisé Claude Code que via l'extension VS Code, et elle saute ou reporte cette étape :

125 

126* Lorsqu'une politique bloque la source

127* Lorsque `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` est défini

128* Après une tentative échouée qui attend une nouvelle tentative

129 

130Les commandes shell `claude plugin` ne l'enregistrent jamais pour vous.

131 

132Ajoutez-la, puis réessayez l'installation :

133 

134```text theme={null}

135/plugin marketplace add anthropics/claude-plugins-official

136```

137 

138Claude Code imprime `Successfully added marketplace: claude-plugins-official`, et `/plugin marketplace list` affiche la marketplace avec sa source.

139 

140Pour tout autre nom de marketplace dans ce message, consultez [`Marketplace "<name>" not found`](#marketplace-not-found).

141 

142La même chaîne apparaît également dans l'onglet **Erreurs** de `/plugin`, la liste des échecs de chargement du panneau, lorsqu'un plugin répertorié dans vos paramètres nomme une marketplace que vous n'avez pas ajoutée.

143 

144<h3 id="marketplace-not-found">

145 `Marketplace "<name>" not found`

146</h3>

147 

148Vous avez exécuté `/plugin install <plugin>@<name>` dans une session, souvent à partir d'une ligne d'installation que quelqu'un vous a envoyée, et Claude Code a signalé qu'il n'a pas de marketplace portant ce nom.

149 

150Si le nom commence par `claudeai-`, la marketplace est hébergée sur claude.ai, et vous l'ajoutez par nom à partir de votre shell avec `claude plugin marketplace add --claudeai <name>`. Consultez [Ajouter une marketplace à partir de claude.ai](/docs/fr/plugins/install#add-from-claude-ai).

151 

152Pour tout autre nom, une ligne d'installation nomme une marketplace mais ne dit pas où la marketplace est hébergée, et Claude Code n'a pas d'index pour rechercher un nom de marketplace. Demandez à la personne qui a envoyé la ligne la source de la marketplace, qui est un `owner/repo` GitHub, une URL git ou un chemin. Ensuite, [ajoutez la marketplace](/docs/fr/plugins/install#add-a-marketplace) et exécutez à nouveau la ligne d'installation.

153 

154Une marketplace que quelqu'un vous envoie est tierce, donc [examinez le plugin avant de l'installer](/docs/fr/plugins/security#review-a-plugin-before-you-install).

155 

156Si vous avez déjà ajouté la marketplace, vérifiez l'orthographe par rapport à `/plugin marketplace list`.

157 

158<h3 id="invalid-marketplace-source-format">

159 `Invalid marketplace source format`

160</h3>

161 

162Vous avez exécuté `/plugin marketplace add <source>` ou `claude plugin marketplace add <source>`, et Claude Code a répondu `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`.

163 

164Claude Code accepte une source dans l'une de ces formes :

165 

166* Un raccourci GitHub `owner/repo`

167* Une URL `https://` ou `http://`

168* Une URL SSH `user@host:path`

169* Un chemin local commençant par `./`, `../`, `/` ou `~`

170 

171Un nom nu tel que `claude-plugins-official` ne correspond à aucun d'eux. Pas plus qu'un nom d'hôte nu tel que `marketplace.anthropic.com`.

172 

173Retapez la source dans l'une des formes acceptées :

174 

175```text theme={null}

176/plugin marketplace add anthropics/claude-plugins-official

177```

178 

179Claude Code imprime `Successfully added marketplace: <name>` lorsque l'ajout fonctionne.

180 

181<h3 id="is-not-a-valid-github-owner-repo-shorthand">

182 `'<source>' is not a valid GitHub owner/repo shorthand`

183</h3>

184 

185Vous avez passé une source avec une barre oblique qui n'est pas `owner/repo`, comme `github.com/owner/repo` ou un chemin `gitlab.example.com/group/project`. Claude Code l'a refusée avec ce message et une liste de formes acceptées.

186 

187Le raccourci `owner/repo` est spécifique à GitHub et doit suivre les règles de nommage de GitHub, donc un nom d'hôte ou un segment de chemin supplémentaire échoue. Passez la source dans la forme qui correspond à l'endroit où la marketplace est hébergée :

188 

189* **Un référentiel sur n'importe quel hôte** : l'URL de clonage complète

190* **Un `marketplace.json` hébergé** : son URL `https://`

191* **Un checkout local** : `./path` ou un chemin absolu

192 

193Par exemple, pour ajouter la marketplace officielle par son URL de clonage, dans une session :

194 

195```text theme={null}

196/plugin marketplace add https://github.com/anthropics/claude-plugins-official.git

197```

198 

199Un ajout réussi imprime `Successfully added marketplace: <name>`.

200 

201<h3 id="path-does-not-exist">

202 `Path does not exist: <path>`

203</h3>

204 

205Vous avez passé un chemin local à `marketplace add`, et rien n'existe à ce chemin. Un chemin relatif se résout par rapport à votre répertoire courant.

206 

207Vérifiez le chemin résolu dans le message. Ensuite, exécutez la commande à partir du répertoire à partir duquel le chemin relatif commence, ou passez un chemin absolu au répertoire de la marketplace. Un ajout réussi imprime `Successfully added marketplace: <name>`.

208 

209Claude Code accepte un répertoire qui contient `.claude-plugin/marketplace.json`, ou un chemin vers un fichier `.json`. Un chemin vers tout autre fichier échoue avec `File path must point to a .json file (marketplace.json)`.

210 

211<h3 id="marketplace-file-not-found-at-claude-plugin-marketplace-json">

212 `Marketplace file not found at <path>/.claude-plugin/marketplace.json`

213</h3>

214 

215Claude Code a cloné ou téléchargé la marketplace mais n'a trouvé aucun `marketplace.json` au chemin attendu à l'intérieur. La commande d'ajout la signale comme `Failed to add marketplace: Marketplace file not found at ...`.

216 

217L'emplacement par défaut est `.claude-plugin/marketplace.json` à la racine du référentiel, et la [référence de la marketplace](/docs/fr/plugins/marketplace-reference) répertorie les emplacements acceptés.

218 

219La correction diffère pour le propriétaire et pour tout le monde d'autre :

220 

221* **Vous possédez la marketplace** : mettez le fichier à cet emplacement et réajoutez la marketplace

222* **Quelqu'un d'autre l'héberge** : demandez au propriétaire la source exacte qu'il publie

223 

224<h3 id="ssh-authentication-failed-or-https-authentication-failed">

225 `SSH authentication failed` ou `HTTPS authentication failed`

226</h3>

227 

228Vous avez ajouté ou mis à jour une marketplace à partir d'un référentiel git, et le clonage a échoué avec `Failed to clone marketplace repository:` suivi de l'une de ces lignes.

229 

230Vérifiez d'abord le référentiel lui-même : un `owner/repo` mal orthographié, un référentiel qui n'existe pas ou un référentiel privé que vous ne pouvez pas voir se termine également par ce message. Ouvrez l'URL du référentiel dans votre navigateur, ou exécutez `git ls-remote <url>` dans votre terminal, pour confirmer qu'il existe et que vous y avez accès.

231 

232Si le référentiel est correct, la cause est les identifiants. Claude Code exécute git avec les invites interactives désactivées, donc il ne peut pas vous demander un mot de passe, une phrase de passe de clé ou un identifiant de la façon dont votre terminal le ferait. Si git a besoin d'une invite, vous voyez `fatal: Cannot prompt because user interactivity has been disabled` ou `terminal prompts disabled` dans l'erreur d'origine. Seuls les identifiants qui fonctionnent déjà de manière non interactive réussissent :

233 

234* **SSH** : `ssh -T git@<host>` doit réussir sans demander de phrase de passe, et l'hôte doit déjà être dans `known_hosts`

235* **HTTPS** : votre assistant d'identifiants doit contenir un jeton pour l'hôte. Pour GitHub, exécutez `gh auth login` et `gh auth setup-git`. Pour un autre hôte, stockez un jeton d'accès personnel dans votre assistant d'identifiants git. Testez avec `git ls-remote <url>`

236 

237Une fois que `git ls-remote` réussit dans votre terminal sans invite, exécutez à nouveau l'ajout ou la mise à jour. Un ajout réussi imprime `Successfully added marketplace: <name>`. Une mise à jour réussie imprime `Successfully updated marketplace: <name>` à partir de votre shell, ou `✔ Updated 1 marketplace` dans une session.

238 

239Pour faire en sorte que Claude Code ignore SSH pour les sources GitHub `owner/repo`, définissez `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`. Sans cela, Claude Code clone ces sources sur SSH lorsqu'une clé SSH pour `github.com` semble configurée, et revient à HTTPS lorsque le clonage SSH échoue.

240 

241Pour ce que la mise à jour automatique en arrière-plan peut et ne peut pas faire avec vos identifiants, consultez [Ce que la mise à jour automatique en arrière-plan fait avec les identifiants](/docs/fr/plugins/host-marketplace#what-background-auto-update-does-with-credentials).

242 

243<h3 id="ssh-host-key-is-not-in-your-known-hosts-file">

244 `SSH host key is not in your known_hosts file`

245</h3>

246 

247Vous avez ajouté une marketplace sur SSH à partir d'un hôte auquel vous ne vous êtes jamais connecté, et le clonage a échoué avec cette ligne et un conseil `ssh -T git@<host>`. Pour un hôte dont la clé a changé, le message est `SSH host key has changed` avec un conseil `ssh-keygen -R <host>` à la place.

248 

249Claude Code clone avec `StrictHostKeyChecking=yes`, donc il refuse un hôte dont vous n'avez pas encore accepté la clé plutôt que d'accepter la clé automatiquement. Connectez-vous une fois à partir de votre terminal pour accepter l'empreinte digitale, puis réessayez :

250 

251```shell theme={null}

252ssh -T git@github.com

253```

254 

255Pour un référentiel public, ajoutez la marketplace par son URL `https://` à la place pour éviter complètement SSH.

256 

257<h3 id="command-git-not-found-or-is-in-an-unsafe-location">

258 `Command 'git' not found or is in an unsafe location`

259</h3>

260 

261Sur Windows, vous avez ajouté une marketplace et Claude Code a signalé `Failed to clone marketplace repository: Command 'git' not found or is in an unsafe location (current directory)`.

262 

263Claude Code recherche `git` sur votre `PATH` et refuse d'en exécuter un trouvé uniquement dans le répertoire courant. Pour corriger cela, installez Git et réessayez :

264 

265<Steps>

266 <Step title="Installer Git pour Windows">

267 Installez Git pour Windows afin que `git` soit sur votre `PATH`.

268 </Step>

269 

270 <Step title="Ouvrir un nouveau terminal">

271 Ouvrez un nouveau terminal pour que le `PATH` mis à jour s'applique.

272 </Step>

273 

274 <Step title="Confirmer que git s'exécute">

275 Confirmez que `git --version` imprime une version.

276 </Step>

277 

278 <Step title="Réessayer l'ajout">

279 Exécutez à nouveau la commande `marketplace add`.

280 </Step>

281</Steps>

282 

283<h3 id="git-clone-timed-out-after-120s">

284 `Git clone timed out after 120s`

285</h3>

286 

287Vous avez ajouté ou mis à jour une marketplace, et elle a échoué avec `Git clone timed out after 120s`, suivi d'un conseil pour définir `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`.

288 

289Le clonage d'une marketplace et le re-clonage d'une pour la mettre à jour obtiennent 120 secondes par défaut. Pour un grand référentiel ou une connexion lente, augmentez la limite. La valeur est en millisecondes :

290 

291<Tabs>

292 <Tab title="Bash ou Zsh">

293 ```bash theme={null}

294 export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000

295 ```

296 </Tab>

297 

298 <Tab title="PowerShell">

299 ```powershell theme={null}

300 $env:CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS = "300000"

301 ```

302 </Tab>

303</Tabs>

304 

305Ensuite, réessayez dans le même shell.

306 

307Si le référentiel est un monorepo, limitez le checkout aux répertoires que vous nommez avec `claude plugin marketplace add <source> --sparse <paths>`.

308 

309<h3 id="marketplace-updates-keep-failing-offline">

310 Les mises à jour de la marketplace continuent d'échouer hors ligne

311</h3>

312 

313Vous travaillez dans un environnement où l'hôte git de la marketplace est inaccessible, et chaque session répète un échec d'actualisation en arrière-plan. Votre checkout existant de la marketplace reste en place et le démarrage n'est pas retardé.

314 

315Chaque session, pour une marketplace avec [mise à jour automatique activée](/docs/fr/plugins/loading#which-marketplaces-and-plugins-auto-update), Claude Code vérifie l'hôte git de la marketplace pour les nouveaux commits en arrière-plan. Lorsque cette vérification ne peut pas atteindre l'hôte, elle essaie de cloner à nouveau la marketplace, et hors ligne ce clonage échoue aussi.

316 

317Définissez cette variable pour ignorer la tentative de re-clonage et continuer à utiliser le checkout existant lorsque la vérification ne peut pas atteindre l'hôte :

318 

319<Tabs>

320 <Tab title="Bash ou Zsh">

321 ```bash theme={null}

322 export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

323 ```

324 </Tab>

325 

326 <Tab title="PowerShell">

327 ```powershell theme={null}

328 $env:CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE = "1"

329 ```

330 </Tab>

331</Tabs>

332 

333Avec la variable définie, Claude Code ignore le re-clonage uniquement pour un checkout qui contient déjà `.claude-plugin/marketplace.json`. Une marketplace qui n'a jamais été clonée ou dont le clonage s'est arrêté à mi-chemin obtient toujours la tentative de clonage, donc ajoutez-la une fois en ligne.

334 

335Pour un déploiement entièrement hors ligne, pré-remplissez plutôt le répertoire des plugins au moment de la construction de l'image avec `CLAUDE_CODE_PLUGIN_SEED_DIR`, en suivant [Ensemencer les conteneurs et CI](/docs/fr/plugins/org#seed-containers-and-ci).

336 

337<h3 id="marketplace-add-fails-on-a-github-enterprise-server-host">

338 L'ajout de marketplace échoue sur un hôte GitHub Enterprise Server

339</h3>

340 

341Vous avez ajouté une marketplace à partir d'une URL GitHub Enterprise Server (GHES) et avez obtenu une erreur de politique, ou vous l'avez ajoutée à partir de claude.ai et avez obtenu une erreur d'accès GitHub.

342 

343Les deux cas se trouvent sur la page GHES :

344 

345* [Une erreur de politique](/docs/fr/github-enterprise-server#marketplace-add-fails-with-a-policy-error) signifie que votre organisation a restreint les sources de marketplace et un administrateur doit ajouter un `hostPattern` pour l'hôte

346* [Une erreur d'accès GitHub sur claude.ai](/docs/fr/github-enterprise-server#marketplace-add-on-claude-ai-fails-with-a-github-access-error) signifie que votre propre compte GitHub Enterprise n'est pas encore connecté

347 

348<h2 id="install-a-plugin">

349 Installer un plugin

350</h2>

351 

352Vous avez ajouté une marketplace et exécuté une installation, et l'installation s'est arrêtée avec un message au lieu d'installer quoi que ce soit. Ces entrées couvrent ces messages. Elles couvrent également les messages connexes qui apparaissent plus tard dans l'onglet **Erreurs** de `/plugin`, ou comme un onglet **Discover** vide, lorsqu'un plugin ou sa marketplace ne peut pas être trouvé, lu ou approuvé.

353 

354<h3 id="plugin-not-found-in-marketplace">

355 `Plugin "<name>" not found in marketplace "<marketplace>"`

356</h3>

357 

358Vous avez exécuté `/plugin install <name>@<marketplace>` ou `claude plugin install <name>@<marketplace>`, et le nom du plugin ne figure pas dans la copie du catalogue de cette marketplace sur votre machine.

359 

360`claude plugin install` dans votre shell imprime le même message lorsque vous n'avez pas du tout ajouté la marketplace. Si `claude plugin marketplace update <marketplace>` répond ensuite `Marketplace '<marketplace>' not found`, [ajoutez d'abord la marketplace](#add-a-marketplace).

361 

362<h4 id="the-message-ends-with-a-refresh-hint">

363 `not found in marketplace` avec un conseil d'actualisation

364</h4>

365 

366Le conseil se lit comme suit : `Your local copy may be out of date — try claude plugin marketplace update <marketplace>` ou `The marketplace couldn't be refreshed (...)`. Claude Code n'a pas actualisé la marketplace avant la recherche, par exemple lorsque vous êtes hors ligne, donc votre copie du catalogue peut être obsolète. Actualisez avec le nom de la marketplace, puis installez à nouveau :

367 

368```text theme={null}

369/plugin marketplace update <marketplace>

370```

371 

372`claude plugin marketplace update` imprime `Successfully updated marketplace: <name>`, et `/plugin marketplace update` affiche `✔ Updated 1 marketplace`. Si l'installation réessayée imprime le même message, vérifiez le nom comme [`not found in marketplace` sans conseil](#the-message-has-no-hint) le décrit. [Quand Claude Code actualise une marketplace avant une installation](/docs/fr/plugins/loading#when-claude-code-refreshes-a-marketplace-before-an-install) répertorie les autres cas où l'actualisation ne s'exécute pas.

373 

374<h4 id="the-message-has-no-hint">

375 `not found in marketplace` sans conseil

376</h4>

377 

378Le nom est le problème le plus probable. Ouvrez `/plugin`, allez à **Discover**, et copiez le nom de la liste.

379 

380Avant v2.1.232, Claude Code actualisait la marketplace nommée uniquement après que la recherche ait échoué, et uniquement lorsque la mise à jour automatique était activée pour elle.

381 

382<h3 id="plugin-not-found-in-any-marketplace">

383 `Plugin "<name>" not found in any marketplace`

384</h3>

385 

386Vous avez exécuté `/plugin install <name>` sans `@marketplace`, et aucune marketplace enregistrée n'a ce plugin. `claude plugin install <name>` signale `Plugin "<name>" not found in any configured marketplace`.

387 

388Sans nom de marketplace, `claude plugin install` recherche les catalogues qu'il a déjà et ne les actualise pas d'abord, et `/plugin install` actualise uniquement les marketplaces qui ont la mise à jour automatique activée. Nommez la marketplace, et Claude Code l'actualise avant de rechercher le plugin :

389 

390```text theme={null}

391/plugin install <name>@<marketplace>

392```

393 

394Lorsque l'installation fonctionne, vous voyez `✓ Installed <plugin>.` dans une session, ou `Successfully installed plugin: <plugin>@<marketplace>` à partir de `claude plugin install`.

395 

396Si vous ne savez pas quelle marketplace répertorie le plugin, exécutez `/plugin marketplace list` pour les marketplaces que vous avez, et parcourez **Discover** dans `/plugin` pour le nom du plugin.

397 

398<h3 id="plugin-is-already-installed-globally">

399 `Plugin '<name>@<marketplace>' is already installed globally`

400</h3>

401 

402Vous avez exécuté `/plugin install` pour un plugin qui est déjà installé à la portée utilisateur ou par les paramètres gérés, et Claude Code a refusé avec `Use '/plugin' to manage existing plugins.` Si vous avez tapé le nom du plugin sans `@<marketplace>`, le message omet `globally`.

403 

404Le plugin est déjà disponible dans chaque projet, donc il n'y a rien à ajouter. Pour modifier sa [portée](/docs/fr/plugins/install), l'activer ou le désactiver, ou le configurer, ouvrez `/plugin` et allez à **Installed**.

405 

406Un plugin installé uniquement à la portée du projet ou locale ne déclenche pas ce message. Claude Code vous permet de l'installer à la portée utilisateur aussi, donc il est disponible dans d'autres projets.

407 

408`claude plugin install` dans votre shell imprime un message différent. Pour un plugin déjà installé à la portée cible, il imprime `Plugin "<name>@<marketplace>" is already installed (scope: user)` et quitte 0. Si son répertoire de cache est manquant, la même commande le re-télécharge.

409 

410<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">

411 `This plugin uses a source type your Claude Code version does not support`

412</h3>

413 

414Vous avez installé un plugin dont l'entrée de marketplace utilise un type de source que cette version de Claude Code ne peut pas récupérer, et Claude Code s'est arrêté avec ce message et `Update Claude Code and try again.`

415 

416Mettez à jour Claude Code, puis réessayez l'installation. Les types de source se trouvent sur la [référence de la marketplace](/docs/fr/plugins/marketplace-reference).

417 

418<h3 id="plugin-archive-integrity-check-failed">

419 `Plugin archive integrity check failed`

420</h3>

421 

422Vous avez installé un plugin qui est distribué sous forme d'archive zip, et Claude Code l'a refusé avec cette ligne et `The archive was not installed.` L'entrée de marketplace du plugin utilise une source [`archive`](/docs/fr/plugins/marketplace-reference) avec une épingle `sha256`, et le digest du fichier téléchargé ne correspond pas à l'épingle.

423 

424Le message complet ressemble à ceci :

425 

426```text theme={null}

427Plugin archive integrity check failed for https://artifacts.example.com/claude-plugins/my-plugin.zip: expected sha256 6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1, got ac52220c0914ef8ca6a602e4a7362f88d30fb021110f72a6d15b68c3fe7df2b7. The archive was not installed. Verify the sha256 in the marketplace entry, or that the URL serves the intended file.

428```

429 

430La correction diffère pour l'éditeur et l'installateur :

431 

432* **Vous publiez le plugin** : recalculez le digest du fichier exact que l'URL sert et mettez à jour le `sha256` dans l'entrée de marketplace. Utilisez `shasum -a 256 my-plugin.zip`, ou `Get-FileHash -Algorithm SHA256 my-plugin.zip` dans PowerShell

433* **Vous installez le plugin** : exécutez `/plugin marketplace update <name>` dans une session pour actualiser le catalogue au cas où l'entrée aurait été corrigée, puis réessayez l'installation. Si les digests ne correspondent toujours pas après l'actualisation, demandez au propriétaire de la marketplace quel fichier ils ont épinglé avant d'installer

434 

435<h3 id="marketplace-is-registered-from-an-untrusted-source">

436 `Marketplace "<name>" is registered from an untrusted source`

437</h3>

438 

439Une marketplace que vous avez ajoutée plus tôt a cessé de charger, tout comme ses plugins. Cette ligne apparaît dans l'onglet **Erreurs** de `/plugin` ou lors de la prochaine actualisation.

440 

441La marketplace est enregistrée sous un nom qui est [réservé aux marketplaces officielles d'Anthropic](/docs/fr/plugins/marketplace-reference), mais sa source enregistrée n'est pas un référentiel GitHub `anthropics`. Les noms réservés sont re-vérifiés chaque fois qu'une marketplace charge ou s'actualise, donc la marketplace et les plugins installés à partir de celle-ci cessent de charger.

442 

443Le message complet nomme le nom réservé et la correction :

444 

445```text theme={null}

446Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.

447```

448 

449La correction diffère pour les utilisateurs et les éditeurs :

450 

451* **Vous utilisez la marketplace** : dans votre shell, exécutez `claude plugin marketplace remove <name>`, puis ajoutez à nouveau la marketplace à partir du référentiel officiel `github.com/anthropics`

452* **Vous publiez une marketplace tierce qui a utilisé le nom avant qu'il ne devienne réservé** : renommez-la et demandez aux utilisateurs de la réajouter à partir de votre source

453 

454Avant v2.1.205, Claude Code ne vérifiait le nom que lorsque vous ajoutiez la marketplace, donc une entrée enregistrée avant que son nom ne devienne réservé continuait à charger.

455 

456<h3 id="plugin-has-a-corrupt-manifest-file-or-has-an-invalid-manifest-file">

457 `Plugin <name> has a corrupt manifest file` ou `has an invalid manifest file`

458</h3>

459 

460Claude Code a récupéré le plugin, puis n'a pas pu lire son `.claude-plugin/plugin.json`. Dans le shell, le `<name>` dans cette ligne peut être un nom de répertoire temporaire ; le préfixe `Failed to install plugin "<name>@<marketplace>"` porte le vrai nom du plugin. Le libellé indique quel contrôle a échoué :

461 

462* **`corrupt manifest file`, suivi de `JSON parse error:`** : le fichier n'est pas un JSON valide

463* **`invalid manifest file`, suivi de `Validation errors:`** : le fichier analyse mais échoue le schéma, comme `name: Invalid input` pour un champ obligatoire manquant

464 

465`claude plugin install` signale l'un ou l'autre comme `Failed to install plugin "<name>@<marketplace>":` et quitte avec le code 1.

466 

467L'auteur du plugin doit corriger le fichier, et le plugin ne peut pas être installé jusqu'à ce que ce soit fait :

468 

469* **Si c'est vous** : exécutez `claude plugin validate <plugin-directory>` dans votre shell pour voir la même erreur avec le chemin offensant, puis corrigez le fichier

470* **Si ce n'est pas vous** : signalez le message au propriétaire de la marketplace

471 

472<h3 id="plugin-directory-not-found-at-path">

473 `Plugin directory not found at path: <path>`

474</h3>

475 

476L'onglet **Erreurs** dans `/plugin` affiche ceci pour un plugin activé que sa marketplace répertorie par un chemin relatif, comme `./plugins/my-plugin`, lorsqu'aucun répertoire n'existe à ce chemin à l'intérieur de la marketplace. Si vous maintenez la marketplace, corrigez le chemin `source` de l'entrée ou restaurez le dossier. Sinon, signalez le message au propriétaire de la marketplace.

477 

478`Marketplace directory not found at path: <path>` signifie que le propre répertoire de la marketplace est manquant à la place. Pour une marketplace que vous avez ajoutée à partir d'un chemin local, ce répertoire a été déplacé ou supprimé. Restaurez-le, ou supprimez la marketplace et ajoutez-la à nouveau à partir de son nouvel emplacement.

479 

480<h3 id="no-plugins-available-or-no-marketplaces-configured">

481 `No plugins available` ou `No marketplaces configured`

482</h3>

483 

484Vous avez ouvert `/plugin` et l'onglet **Discover** est vide, ou `claude plugin marketplace list` a imprimé `No marketplaces configured`.

485 

486Aucune marketplace n'est enregistrée, donc il n'y a pas de catalogue à afficher. Dans une session, ajoutez la marketplace officielle, `anthropics/claude-plugins-official` :

487 

488```text theme={null}

489/plugin marketplace add anthropics/claude-plugins-official

490```

491 

492Claude Code imprime `Successfully added marketplace: claude-plugins-official`, et **Discover** répertorie ses plugins. La page [Marketplaces Anthropic](/docs/fr/plugins/anthropic-marketplaces) répertorie les autres marketplaces que vous pouvez ajouter.

493 

494<h3 id="marketplace-is-already-added-from-a-different-source">

495 `Marketplace "<name>" is already added from a different source`

496</h3>

497 

498Vous avez confirmé l'ajout d'une marketplace via [`/plugin install <plugin> --marketplace <source>`](/docs/fr/plugins/install#add-a-marketplace-and-install-in-one-command), et le catalogue que Claude Code a récupéré à partir de cette source a le même nom qu'une marketplace que vous avez déjà ajoutée à partir d'une source différente. Claude Code conserve la marketplace existante au lieu de la remplacer, et le plugin n'est pas installé.

499 

500Le message complet ressemble à ceci :

501 

502```text theme={null}

503Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.

504```

505 

506Choisissez quelle source vous voulez :

507 

508* **La marketplace que vous avez déjà ajoutée** : installez à partir de celle-ci par nom avec `/plugin install <plugin>@<name>`

509* **La nouvelle source** : exécutez `/plugin marketplace remove <name>`, puis réessayez l'installation

510 

511<h3 id="cannot-add-marketplace-its-network-source-differs">

512 `Cannot add marketplace "<name>": its network source differs from the one declared for it in settings`

513</h3>

514 

515Vous avez exécuté `marketplace add`, et le catalogue à cette source a le même nom qu'une marketplace qu'un fichier de paramètres déclare déjà sous [`extraKnownMarketplaces`](/docs/fr/settings-reference#extraknownmarketplaces) avec une source différente. Claude Code refuse l'ajout et n'enregistre rien.

516 

517Le message se termine par la correction : la source doit correspondre à celle déclarée pour ce nom dans les paramètres, ou vous modifiez la déclaration. Comparez la source que vous avez passée par rapport à l'entrée `extraKnownMarketplaces` pour ce nom, y compris son `ref`, `path` et `headers`, puis faites l'une de ces choses :

518 

519* **Utilisez la source déclarée** : ajoutez la marketplace à partir de la source que l'entrée de paramètres nomme

520* **Utilisez la nouvelle source** : modifiez ou supprimez l'entrée `extraKnownMarketplaces`, puis ajoutez à nouveau la marketplace. Si les paramètres gérés la déclarent, demandez à votre administrateur

521 

522<h3 id="failed-to-install-from-the-plugin-menu">

523 `Failed to install: <plugin> (<reason>)`

524</h3>

525 

526Vous avez sélectionné des plugins à installer dans le menu `/plugin`, aucun d'eux n'a été installé, et le menu s'est fermé avec ce résumé de ce qui a échoué.

527 

528Certaines raisons, comme la sortie de git après un clonage échoué, affichent uniquement leur première ligne. Lorsqu'une telle raison a été raccourcie, le résumé se termine par `Installing a plugin from its details (Enter) in /plugin shows its full error.`

529 

530Ce qu'il faut faire dépend de si le résumé a raccourci la raison :

531 

532* Corrigez ce que la raison entre parenthèses nomme

533* Lorsque la raison a été raccourcie, exécutez `/plugin`, sélectionnez le plugin sur l'onglet **Discover**, et appuyez sur **Entrée** pour l'installer à partir de ses détails. Si l'installation échoue là, la vue des détails affiche l'erreur complète

534 

535<h3 id="could-not-move-the-new-copy-of-this-plugin-version">

536 `Could not move the new copy of this plugin version into <path>`

537</h3>

538 

539Lorsque vous installez un plugin, Claude Code télécharge une copie fraîche de ses fichiers et la déplace dans le dossier de cette version dans le [cache des plugins](/docs/fr/plugins/loading#find-plugins-on-disk). Ce message signifie que le déplacement a échoué, généralement parce qu'un autre programme utilisait le dossier pendant que l'installation s'exécutait. Le code du système de fichiers apparaît entre parenthèses :

540 

541```text theme={null}

542Could not move the new copy of this plugin version into /home/user/.claude/plugins/cache/acme-tools/formatter/1.2.0: the new copy or the version folder stayed busy while the install ran (ENOTEMPTY) — usually a scanner still reading the freshly downloaded files, another program using that folder, or another process re-creating it. The previously installed copy was moved back. Run the install again once other Claude Code sessions or programs using that folder have finished.

543```

544 

545Le message indique ce qui s'est passé avec la copie qui a été installée avant, ce qui vous indique si le plugin fonctionne toujours :

546 

547* `The previously installed copy was moved back` : la version que vous aviez est toujours installée

548* `had to be removed first`, `was not moved back` ou `could not be moved back` : cette version du plugin n'est pas installée jusqu'à ce qu'une installation réussisse

549* Aucune telle phrase : il n'y avait pas de copie antérieure, donc la version n'est pas encore installée

550 

551Sur Windows, lorsqu'un autre programme détient la copie installée elle-même, le message dit plutôt que cette copie `could not be replaced` et que `It was not replaced and the new copy was discarded`, donc la version que vous aviez est toujours installée.

552 

553Une liste `Left on disk` nomme les dossiers mis de côté à l'intérieur du cache. Une installation ultérieure de cette version ou un nettoyage du cache des plugins les supprime, donc vous n'avez pas besoin de les supprimer.

554 

555Pour corriger l'installation :

556 

557* Fermez les autres sessions Claude Code, les éditeurs et les terminaux qui utilisent le dossier du plugin sous `~/.claude/plugins/cache`, puis exécutez à nouveau l'installation

558* Lorsque le message dit de vérifier les permissions du dossier du cache des plugins, restaurez votre permission d'écriture sur le dossier qu'il nomme et libérez de l'espace disque, puis exécutez à nouveau l'installation

559 

560<h3 id="dependency-errors">

561 Erreurs de dépendance

562</h3>

563 

564Un plugin qui déclare des dépendances peut échouer à installer, ou installer et rester désactivé, lorsqu'une dépendance ne peut pas être satisfaite. Le message vous parvient au moment de l'installation ou au moment du chargement :

565 

566* **Pendant l'installation** : le refus revient comme le message d'erreur de l'installation

567* **Lorsque le plugin charge** : le problème apparaît dans `claude plugin list` et l'onglet **Erreurs** de `/plugin`, et Claude Code garde le plugin affecté désactivé jusqu'à ce que vous le résolviez

568 

569Le tableau répertorie chaque message et sa correction. Pour déclarer des dépendances en tant qu'auteur, consultez [Dépendances des plugins](/docs/fr/plugins/dependencies).

570 

571| Message | Signification | Comment résoudre |

572| :---------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

573| `Dependency "<dep>" is not installed` | Une dépendance déclarée n'est pas installée. | Installez-la dans votre shell avec `claude plugin install <dep>@<marketplace>`, ou désinstallez le plugin. Si la marketplace de la dépendance n'est pas encore enregistrée, ajoutez-la et exécutez `/reload-plugins` dans votre session, qui installe les dépendances manquantes qu'elle peut résoudre. |

574| `Dependency "<dep>" is disabled` | La dépendance est installée mais désactivée. | Activez la dépendance, ou désinstallez le plugin qui en a besoin. |

575| `Requires "<dep>" <range>, installed <version>` | La version de la dépendance installée est en dehors de la plage déclarée du plugin. | Mettez à jour la dépendance vers une version dans la plage, ou désinstallez le plugin. |

576| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Aucune version ne satisfait chaque plage qui l'épingle. Le message répertorie les plages. | Désinstallez ou mettez à jour l'un des plugins en conflit, ou demandez à l'auteur en amont d'élargir sa contrainte. |

577| `... has version requirements too complex to intersect` ou `has an invalid version requirement` | Une plage n'est pas un semver valide, ou les plages combinées ne peuvent pas être intersectées. | Corrigez la plage invalide ou simplifiez les longues chaînes `\|\|`. |

578| `... has no git tag satisfying <range>` | Le référentiel de la dépendance n'a pas de balise `<name>--v*` dans la plage. | Vérifiez que les balises en amont libèrent avec cette convention, ou assouplissez la plage. |

579| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | La dépendance se trouve dans une marketplace différente, et la résolution inter-marketplace est désactivée par défaut. | Installez la dépendance vous-même à la même portée, dans votre shell avec `claude plugin install <dep>@<marketplace>` plus le `--scope` auquel vous installez le plugin, puis réessayez. |

580 

581Pour voir ces par programmation, exécutez `claude plugin list --json` dans votre shell. Les plugins avec des problèmes portent un champ `errors` avec les messages et un champ `errorDetails` avec un `type` pour chacun : les deux premières lignes sont `dependency-unsatisfied` et la troisième est `dependency-version-unsatisfied`.

582 

583<h2 id="plugin-installed-but-not-working">

584 Plugin installé mais ne fonctionne pas

585</h2>

586 

587L'installation a réussi, mais les skills, hooks ou serveurs du plugin ne font rien. Commencez par [Le plugin n'apparaît pas ou ses skills ne s'affichent pas](#plugin-doesnt-appear-or-its-skills-dont-show-up), qui vous indique où Claude Code signale ce qu'il a chargé, puis faites correspondre le message.

588 

589<h3 id="plugin-doesnt-appear-or-its-skills-dont-show-up">

590 Le plugin n'apparaît pas ou ses skills ne s'affichent pas

591</h3>

592 

593Vous avez installé un plugin et avez tapé `/` en vous attendant à ses skills, ou avez demandé à Claude de l'utiliser, et rien ne s'est passé.

594 

595Vérifiez l'état du plugin avant de changer quoi que ce soit :

596 

597<Steps>

598 <Step title="Confirmez que le plugin est installé et activé">

599 Exécutez `/plugin` et ouvrez **Installed**. Confirmez que le plugin est répertorié et activé. `claude plugin list` dans votre shell imprime la même liste avec la version, la portée et le `Status: ✔ enabled` de chaque plugin.

600 </Step>

601 

602 <Step title="Lisez l'onglet Erreurs">

603 Ouvrez l'onglet **Erreurs** dans le même panneau. Chaque entrée associe un message à une ligne de guidance. La plupart des messages du reste de cette section proviennent de cet onglet.

604 </Step>

605 

606 <Step title="Rechargez si vous avez installé pendant cette session">

607 Si le plugin est installé et sans erreur mais que vous l'avez installé pendant cette session, exécutez `/reload-plugins`. Il imprime `Reloaded:` avec des comptes de plugins, skills, agents, hooks et serveurs. Lorsque quelque chose a échoué, il ajoute `N errors during load. Run /plugin for details.`

608 </Step>

609</Steps>

610 

611Si le plugin charge sans erreur et ses skills n'apparaissent toujours pas, l'étape suivante diffère pour votre propre plugin et pour celui de quelqu'un d'autre :

612 

613* **Un plugin que vous construisez** : consultez [Le plugin charge mais ses skills sont manquants](#plugin-loads-but-its-skills-are-missing)

614* **Un plugin que quelqu'un d'autre a publié** : ouvrez **Installed** dans `/plugin` et ouvrez le volet de détails du plugin, qui répertorie ce que le plugin contient. Un plugin qui ne répertorie aucun skill là n'en a aucun à offrir lorsque vous tapez `/`

615 

616<h3 id="run-reload-plugins-to-activate">

617 `Run /reload-plugins to activate.`

618</h3>

619 

620Le résumé d'installation dans `/plugin` s'est terminé par `Run /reload-plugins to activate.` au lieu de `Plugin is now active.`

621 

622Claude Code n'a pas activé le plugin pendant l'installation, soit parce que l'activer [invaliderait le cache d'invite](/docs/fr/prompt-caching#enabling-or-disabling-a-plugin) soit parce que la tentative d'activation a échoué.

623 

624Vous n'avez pas besoin de taper la commande. Le panneau se ferme et Claude Code exécute `/reload-plugins` pour vous, ou le met en file d'attente jusqu'à ce que la réponse qui s'écoule se termine.

625 

626Lisez ce que ce rechargement imprime :

627 

628* **`Reloaded:` avec des comptes de plugins, skills, agents, hooks et serveurs** : le plugin est maintenant actif. Lorsque quelque chose n'a pas pu charger, la ligne ajoute `N errors during load. Run /plugin for details.`

629* **`This reload changes MCP tools (...) — your next message will re-read the whole conversation instead of using the cache. Run /reload-plugins --force to apply.`** : le rechargement ajouterait ou supprimerait un serveur MCP de plugin, ou l'outil `LSP`, et invaliderait votre cache d'invite. Pour le cas LSP, la ligne commence par `This reload adds the LSP tool` ou `This reload removes the LSP tool`. Exécutez-le avec `--force` pour activer le plugin de toute façon, ou démarrez une nouvelle session

630 

631Avant v2.1.268, une installation qui n'a pas été activée pendant l'installation restait en attente jusqu'à ce que vous exécutiez vous-même `/reload-plugins`.

632 

633Avant v2.1.246, le compte des skills dans ce résumé incluait uniquement les entrées `commands/` d'un plugin, donc un rechargement pouvait charger les skills `SKILL.md` d'un plugin et signaler toujours `0 skills`.

634 

635<h3 id="plugin-not-cached-at">

636 `Plugin "<name>" not cached at <path>`

637</h3>

638 

639L'onglet **Erreurs** affiche cette ligne avec la guidance `Run /plugin to refresh the plugin cache`. Claude Code a un enregistrement d'installation pour le plugin, mais le répertoire que l'enregistrement pointe est manquant, par exemple après que vous ayez vidé le cache.

640 

641Réinstallez le plugin à partir de votre shell. `claude plugin install <name>@<marketplace>` re-télécharge un plugin dont le répertoire d'installation est manquant même si son enregistrement existe :

642 

643```shell theme={null}

644claude plugin install <name>@<marketplace>

645```

646 

647Ensuite, exécutez `/reload-plugins` dans votre session. L'entrée de l'onglet **Erreurs** disparaît et le plugin est de retour sous **Installed**.

648 

649<h3 id="a-plugin-you-disabled-still-loads">

650 `Disabled in ~/.claude/settings.json but still loads`

651</h3>

652 

653Vous avez défini un plugin à `false` dans `~/.claude/settings.json`, et sa ligne dans `claude plugin list` ou `/plugin` affiche ce message suivi de la source qui l'active, comme `— project settings enable it, which overrides your user setting`. Un `true` dans cette source de précédence plus élevée remplace votre paramètre utilisateur.

654 

655Pour refuser un plugin activé par le projet sur votre machine, définissez l'id à `false` dans `.claude/settings.local.json`, qui a une précédence plus élevée que le fichier du projet. Pour les autres sources que le message peut nommer, consultez [Désactivé dans les paramètres utilisateur mais charge toujours](/docs/fr/plugins/loading#disabled-in-user-settings-but-still-loads).

656 

657Si `claude plugin list` marque plutôt le plugin `required by your org`, aucun fichier de paramètres n'est impliqué : votre organisation marque ce plugin synchronisé comme requis sur claude.ai, et il charge même si vous l'aviez désactivé plus tôt. Consultez [Plugins synchronisés à partir de claude.ai](/docs/fr/plugins/loading#synced-plugins).

658 

659<h3 id="plugin-is-enabled-in-project-settings-but-isnt-installed-here">

660 `Plugin "<name>" is enabled in project settings but isn't installed here`

661</h3>

662 

663L'onglet **Erreurs** affiche cette ligne pour un plugin que le `.claude/settings.json` de votre projet active, avec la guidance `Run claude plugin install <name>@<marketplace> --scope project to install it for this project`.

664 

665Les paramètres d'un référentiel peuvent activer un plugin pour tous ceux qui l'ouvrent, mais ils ne l'installent pas. Lorsque le plugin provient d'une source externe telle qu'un référentiel GitHub ou un package npm, Claude Code ne le télécharge pas jusqu'à ce que vous l'installiez vous-même. Exécutez la commande de la ligne de guidance dans votre shell, puis rechargez :

666 

667```shell theme={null}

668claude plugin install <name>@<marketplace> --scope project

669```

670 

671Après avoir exécuté `/reload-plugins` dans votre session, l'entrée de l'onglet **Erreurs** est partie et le plugin est répertorié sous **Installed**.

672 

673Si votre organisation pré-installe des plugins pour vous, elle le fait via les paramètres gérés à la place. Consultez [Pré-installer et exiger des plugins](/docs/fr/plugins/org#pre-install-and-require-plugins).

674 

675<h3 id="failed-to-load-hooks-from-and-hooks-that-dont-fire">

676 `Failed to load hooks from <path>` et hooks qui ne se déclenchent pas

677</h3>

678 

679Les hooks d'un plugin ne s'exécutent pas. Soit l'onglet **Erreurs** affiche un échec de chargement pour eux, les hooks chargent et vous voyez des avis `<Event> hook error` dans la transcription, soit un hook charge sans erreur et ne se déclenche jamais.

680 

681<h4 id="hooks-fail-to-load">

682 Les hooks échouent à charger

683</h4>

684 

685L'onglet **Erreurs** affiche l'un de ces messages :

686 

687* **`Failed to load hooks from <path>: <reason>`** : `hooks/hooks.json` n'est pas un JSON valide ou échoue le schéma des hooks. La raison nomme l'erreur d'analyse ou de validation. Corrigez le fichier. Pour attraper un problème de syntaxe JSON dans `hooks/hooks.json` avant de publier le plugin, exécutez `claude plugin validate <plugin-directory>` dans votre shell

688* **`hooks path not found: <path>`** : le champ `hooks` du manifeste nomme un fichier qui n'existe pas à ce chemin relatif à la racine du plugin. Corrigez le chemin ou ajoutez le fichier

689 

690<h4 id="hook-error-notices-in-the-transcript">

691 Avis `hook error` dans la transcription

692</h4>

693 

694Un avis de la forme `... hook error: Failed with non-blocking status code: <stderr>` signifie que le hook s'est exécuté et sa commande a échoué. Par exemple, `Stop hook error: Failed with non-blocking status code: /bin/sh: node: command not found` signifie que le shell que Claude Code a généré n'a pas pu trouver `node`. Installez-le, ou assurez-vous qu'il est sur le `PATH` du terminal à partir duquel vous démarrez `claude`.

695 

696Pour toute autre erreur, exécutez la commande du hook vous-même à partir du répertoire du plugin pour voir la sortie complète, ou capturez le stderr complet avec [journalisation de débogage](/docs/fr/hooks#debug-hooks).

697 

698<h4 id="hook-loads-but-never-fires">

699 Le hook charge mais ne se déclenche jamais

700</h4>

701 

702Si un hook charge sans erreur mais ne se déclenche jamais, vérifiez sa définition puis regardez-le s'exécuter :

703 

704<Steps>

705 <Step title="Vérifiez le nom de l'événement">

706 Les noms d'événements sont sensibles à la casse, donc confirmez que le vôtre correspond exactement, par exemple `PostToolUse`.

707 </Step>

708 

709 <Step title="Vérifiez le matcher">

710 Confirmez que le `matcher` du hook correspond au nom de l'outil.

711 </Step>

712 

713 <Step title="Déclenchez l'événement exprès">

714 Pour un hook `PostToolUse`, demandez à Claude d'éditer un fichier.

715 </Step>

716 

717 <Step title="Lisez le journal de débogage">

718 Ouvrez le [journal de débogage](/docs/fr/hooks#debug-hooks), qui enregistre quels hooks ont correspondu. Un hook qui s'est exécuté y apparaît avec son code de sortie.

719 </Step>

720</Steps>

721 

722<h3 id="invalid-mcp-server-config-for-and-mcp-servers-that-dont-start">

723 `Invalid MCP server config for "<server>"` et serveurs MCP qui ne démarrent pas

724</h3>

725 

726Un plugin regroupe un serveur MCP, et l'onglet **Erreurs** affiche `Invalid MCP server config for "<server>": <error>`, ou le serveur est répertorié mais `/mcp` ne le montre jamais connecté.

727 

728<h4 id="invalid-mcp-server-config-for-server-error">

729 `Invalid MCP server config for "<server>": <error>`

730</h4>

731 

732La configuration du serveur passe la vérification du schéma, mais Claude Code ne peut pas la résoudre pour cette session. Le texte après les deux points nomme la cause et décide de la correction :

733 

734* **`Missing environment variables: <names>`** : définissez ces variables dans le shell à partir duquel vous démarrez Claude Code, puis démarrez une nouvelle session

735* **`URL is unset or invalid`** : une option `${user_config.*}` que l'URL utilise n'est pas définie. Exécutez `/plugin configure <plugin>` pour la définir

736* **`has an invalid MCP url`** ou **`headersHelper for MCP server '<server>' references ${user_config.*}`** : la configuration du plugin lui-même est en faute. Corrigez l'`url` ou `headersHelper` dans la configuration MCP de votre plugin, ou signalez-le à l'auteur du plugin si le plugin n'est pas le vôtre. Le cas `headersHelper` a sa propre entrée sous [la commande de plugin référence user\_config](/docs/fr/errors#plugin-command-references-user-config)

737 

738<h4 id="server-is-configured-but-never-connects">

739 Le serveur est configuré mais ne se connecte jamais

740</h4>

741 

742Exécutez `/mcp` pour voir l'état du serveur. Lorsque le serveur est sain, `/mcp` le répertorie comme connecté.

743 

744Pour lire l'erreur que le serveur a imprimée au démarrage, exécutez `claude --debug` et ouvrez le journal à `~/.claude/debug/<session-id>.txt`. Le drapeau `--debug` n'imprime pas au terminal.

745 

746Une entrée de serveur dans `.mcp.json` qui échoue le schéma n'apparaît pas dans l'onglet **Erreurs**. Claude Code supprime ce serveur et enregistre `Invalid MCP server config for <server> in <path>` uniquement dans ce journal de débogage. Pour trouver l'entrée sans charger le plugin, exécutez `claude plugin validate` dans votre shell sur le répertoire du plugin, qui la signale comme une erreur.

747 

748Avant v2.1.281, `claude plugin validate` ne vérifiait pas `.mcp.json`.

749 

750<h4 id="server-works-with-plugin-dir-but-fails-after-install">

751 Le serveur fonctionne avec `--plugin-dir` mais échoue après l'installation

752</h4>

753 

754Vous êtes l'auteur du plugin, et le serveur démarre lorsque vous chargez le plugin à partir de son répertoire source avec `--plugin-dir` mais échoue une fois que le plugin est installé.

755 

756Claude Code copie un plugin installé dans son cache, donc un chemin qui ne fonctionne que depuis le répertoire source se casse. Écrivez les chemins à l'intérieur du plugin avec `${CLAUDE_PLUGIN_ROOT}`.

757 

758Pour les chemins qui atteignent en dehors du répertoire du plugin, consultez [Les fichiers que le plugin référence en dehors de son répertoire ne sont pas trouvés](#files-the-plugin-references-outside-its-directory-arent-found).

759 

760<h3 id="language-server-doesnt-start">

761 Le serveur de langage ne démarre pas, utilise trop de mémoire ou signale des diagnostics incorrects

762</h3>

763 

764Vous avez installé un [plugin d'intelligence de code](/docs/fr/plugins/code-intelligence) et Claude ne voit pas de diagnostics, ou le serveur de langage utilise trop de mémoire ou signale des erreurs qui ne sont pas réelles.

765 

766<h4 id="language-server-doesn’t-start">

767 Le serveur de langage ne démarre pas

768</h4>

769 

770Le plugin se connecte à un binaire de serveur de langage que vous installez séparément, et Claude Code le génère par nom de commande à partir de votre `PATH`.

771 

772L'onglet **Erreurs** de `/plugin` affiche l'échec avec sa raison, comme `Executable not found in $PATH: "<binary>"`, et `claude --debug` le journalise comme `LSP server <name> failed to start: <reason>`.

773 

774Installez le binaire et confirmez qu'il est sur le `PATH` du terminal à partir duquel vous démarrez `claude`, par exemple avec `which typescript-language-server`. Ensuite, démarrez une nouvelle session.

775 

776<h4 id="language-server-uses-too-much-memory">

777 Le serveur de langage utilise trop de mémoire

778</h4>

779 

780Les serveurs de langage tels que `rust-analyzer` et `pyright` indexent le projet entier. Désactivez le plugin avec `/plugin disable <plugin>` dans une session et fiez-vous plutôt aux outils de recherche intégrés de Claude.

781 

782<h4 id="false-positive-diagnostics-in-a-monorepo">

783 Faux diagnostics positifs dans un monorepo

784</h4>

785 

786Un serveur de langage qui n'est pas configuré pour l'espace de travail peut signaler des importations non résolues pour les packages internes. Il n'y a rien à corriger du côté Claude Code, et les diagnostics n'empêchent pas Claude d'éditer le code.

787 

788<h2 id="build-a-plugin">

789 Construire un plugin

790</h2>

791 

792Vous développez un plugin et le chargez avec `--plugin-dir` ou l'installez à partir d'une marketplace locale. Ces entrées couvrent les échecs que vous rencontrez lors du développement d'un plugin. Pour que les vérifications s'exécutent après chaque modification, consultez [Tester et déboguer](/docs/fr/plugins/create#test-and-debug).

793 

794Deux échecs qui atteignent également les utilisateurs d'un plugin ont leurs entrées sous [Plugin installé mais ne fonctionne pas](#plugin-installed-but-not-working) :

795 

796* **Un hook qui ne se déclenche pas** : consultez [hooks qui ne se déclenchent pas](#failed-to-load-hooks-from-and-hooks-that-dont-fire)

797* **Un serveur MCP qui ne démarre pas** : consultez [Les serveurs MCP qui ne démarrent pas](#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start)

798 

799<h3 id="commands-path-not-found">

800 `commands path not found: <path>`

801</h3>

802 

803L'onglet **Erreurs** affiche `commands path not found: <absolute path>` avec la guidance `Check that the path in your manifest or marketplace config is correct`. Le même message apparaît pour `skills`, `agents` et `hooks`.

804 

805Claude Code a résolu un chemin à partir de votre `plugin.json` ou entrée de marketplace par rapport à la racine du plugin et n'a rien trouvé là. Le chemin dans le message est le chemin absolu qu'il a vérifiée, donc comparez-le avec ce qui est sur le disque. Corrigez le chemin ou créez le répertoire, puis exécutez `/reload-plugins`.

806 

807Les chemins dans le manifeste sont relatifs à la racine du plugin et commencent par `./`. Un chemin qui se résout en dehors de la racine du plugin est signalé comme `<component> path escapes plugin directory` à la place et est supprimé.

808 

809<h3 id="plugin-dir-loads-a-plugin-with-no-components">

810 `--plugin-dir` à une racine de marketplace ne charge pas les plugins sous `plugins/`

811</h3>

812 

813Vous avez démarré `claude --plugin-dir <path>` et ne voyez aucune erreur, mais les skills, agents et hooks du plugin ne sont pas là.

814 

815`--plugin-dir` prend le répertoire racine du plugin, celui qui contient `.claude-plugin/plugin.json` et les répertoires de composants tels que `skills/`. Si vous le pointez plutôt à une racine de marketplace, Claude Code ne lit pas `marketplace.json`, donc un plugin sous `plugins/` ne charge pas, et vous ne voyez aucune erreur. Avant v2.1.281, Claude Code chargeait une racine de marketplace comme un plugin vide nommé d'après ce répertoire. Pointez le drapeau au répertoire du plugin lui-même :

816 

817```shell theme={null}

818claude --plugin-dir ./my-marketplace/plugins/my-plugin

819```

820 

821Ensuite, ouvrez **Installed** dans `/plugin`, où le volet de détails du plugin répertorie ses composants.

822 

823<h3 id="files-the-plugin-references-outside-its-directory-arent-found">

824 Les fichiers que le plugin référence en dehors de son répertoire ne sont pas trouvés

825</h3>

826 

827Un plugin fonctionne à partir de son répertoire source avec `--plugin-dir` mais échoue après l'installation, avec des erreurs concernant un chemin comme `../shared-utils`.

828 

829Claude Code copie un plugin installé dans son cache et le charge à partir de là, donc un chemin qui atteint en dehors du propre répertoire du plugin ne pointe vers rien dans le cache. Déplacez les fichiers partagés à l'intérieur du répertoire du plugin, ou référencez-les via un lien symbolique à l'intérieur de celui-ci. Pour où se trouve le cache et comment les chemins se résolvent, consultez [Trouvez les plugins sur le disque](/docs/fr/plugins/loading#find-plugins-on-disk).

830 

831<h3 id="claude-plugin-root-shows-forward-slashes-on-windows">

832 `${CLAUDE_PLUGIN_ROOT}` affiche des barres obliques avant sur Windows

833</h3>

834 

835Sur Windows, un hook de plugin reçoit `${CLAUDE_PLUGIN_ROOT}` comme `C:/Users/you/...` plutôt que `C:\Users\you\...`, et un script qui s'attendait à des barres obliques inverses se casse.

836 

837Claude Code exécute les hooks de forme shell via Git Bash sur Windows et substitue la racine du plugin dans la forme Win32 avec barres obliques avant exprès. Les builtins Bash, les outils MSYS et les binaires Windows natifs acceptent tous cette forme.

838 

839Si votre script a besoin de barres obliques inverses, basculez le hook vers l'une des formes qui conservent les chemins natifs, décrites sous [forme exec et forme shell](/docs/fr/hooks#exec-form-and-shell-form) :

840 

841* Un hook de forme exec, qui génère le processus directement avec un tableau `args`

842* Un hook avec `"shell": "powershell"`

843 

844<h3 id="plugin-loads-but-its-skills-are-missing">

845 Le plugin charge mais ses skills sont manquants

846</h3>

847 

848Votre plugin est répertorié sous **Installed** sans erreurs, mais ses skills ne sont pas offerts lorsque vous tapez `/`.

849 

850Les skills chargent à partir de `skills/` à la racine du plugin et les commandes à partir de `commands/` à la racine du plugin. Seul `plugin.json` appartient à l'intérieur de `.claude-plugin/`, et un répertoire `skills/` à l'intérieur de `.claude-plugin/` n'est pas scanné. Déplacez les répertoires à la racine du plugin et exécutez `/reload-plugins`. Après cela, le volet de détails du plugin dans `/plugin` répertorie les skills, et taper `/` les offre.

851 

852Chaque skill est un répertoire contenant `SKILL.md`. Une entrée `skills` dans le manifeste qui pointe vers un fichier `SKILL.md` plutôt que son répertoire est signalée comme `path is a file; skills entries must be directories containing SKILL.md`.

853 

854<h3 id="skill-loads-but-claude-never-invokes-the-skill">

855 Le skill charge mais Claude n'invoque jamais le skill

856</h3>

857 

858Le skill de votre plugin s'exécute lorsque vous tapez sa commande `/<plugin>:<skill>`, mais Claude ne l'invoque jamais en réponse à une demande simple.

859 

860Vérifiez ces causes dans l'ordre :

861 

862* **Le skill définit `disable-model-invocation: true`** : avec ce champ défini, seul vous pouvez invoquer le skill. Le modèle de skill dans [Créez votre premier plugin](/docs/fr/plugins/create#create-your-first-plugin) le définit. Supprimez la ligne d'un skill que vous voulez que Claude invoque de lui-même. [Contrôlez qui invoque un skill](/docs/fr/skills#control-who-invokes-a-skill) couvre le champ

863* **La description ne correspond pas à la façon dont les gens demandent** : travaillez à travers les vérifications dans [Le skill ne se déclenche pas](/docs/fr/skills#skill-not-triggering)

864* **La description est tronquée** : lorsque de nombreux skills sont installés, Claude Code raccourcit les descriptions pour s'adapter au budget de caractères de la liste, ce qui peut supprimer les mots-clés dont Claude a besoin pour correspondre à une demande. Consultez [Les descriptions de skill sont coupées court](/docs/fr/skills#skill-descriptions-are-cut-short)

865 

866Pour mesurer la fréquence à laquelle le skill se déclenche sur des invites réalistes plutôt que de vérifier une à la fois, écrivez un cas d'évaluation avec un [évaluateur `tool_used: Skill`](/docs/fr/plugin-evals#create-your-first-eval-suite) et exécutez-le avec `claude plugin eval` après chaque modification de description.

867 

868<h3 id="is-not-a-plugin-or-skill-folder">

869 `<directory> is not a plugin or skill folder` à partir de `claude plugin eval init`

870</h3>

871 

872Vous avez exécuté `claude plugin eval init` à partir d'un répertoire qui n'est pas la racine d'un plugin, comme votre répertoire personnel ou la racine d'un référentiel qui garde le plugin dans un sous-répertoire. `init` écrit la suite sous le répertoire de travail, donc il s'arrête au lieu de créer un répertoire `evals/` que le plugin ne verrait jamais.

873 

874Changez à la racine du plugin, le répertoire qui contient `.claude-plugin/plugin.json` ou le `SKILL.md` du skill, et exécutez à nouveau la commande. Pour échafauder la suite ailleurs exprès, passez `--eval-dir`. Consultez [Testez les plugins avec des evals](/docs/fr/plugin-evals).

875 

876<h3 id="the-userconfig-dialog-never-appears">

877 La boîte de dialogue `userConfig` n'apparaît jamais

878</h3>

879 

880Votre plugin déclare des options `userConfig`, mais aucune boîte de dialogue de configuration n'apparaît lorsque vous l'installez.

881 

882L'installation interactive affiche la boîte de dialogue, et la commande shell prend les valeurs comme drapeaux à la place :

883 

884* **`/plugin install` dans une session, ou l'onglet Discover dans `/plugin`** : la boîte de dialogue fait partie de cette installation interactive

885* **`claude plugin install` dans votre shell** : ne demande jamais les valeurs `userConfig`. Il enregistre toutes les valeurs `--config KEY=VALUE` que vous passez, et lorsque les options restent non définies, il imprime `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Lorsque l'une des options non définies est requise, `(M required)` suit `not yet set`.

886 

887Si vous avez installé à partir du shell, passez les valeurs avec `--config`, un drapeau par option :

888 

889```shell theme={null}

890claude plugin install my-plugin@my-marketplace --config api_url=https://example.com

891```

892 

893Lorsque chaque option est définie, la sortie d'installation ne porte aucune ligne `not yet set`. Pour ouvrir la boîte de dialogue après coup à la place, exécutez `/plugin configure my-plugin@my-marketplace` dans une session.

894 

895Si vous passez une clé `--config` que le manifeste ne déclare pas, le plugin s'installe toujours, et la commande imprime `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` suivi des clés que le plugin déclare.

896 

897<h3 id="claude-plugin-validate-reports-errors">

898 `claude plugin validate` signale des erreurs

899</h3>

900 

901Vous avez exécuté `claude plugin validate <path>`, ou `/plugin validate <path>` dans une session, et il a imprimé `Found N errors` et `Validation failed`, puis a quitté avec le code 1.

902 

903Le validateur lit le manifeste au chemin que vous lui donnez : `.claude-plugin/plugin.json` pour un répertoire de plugin, ou `.claude-plugin/marketplace.json` pour un répertoire de marketplace. Pour une marketplace, il préfixe les problèmes dans le propre manifeste d'une entrée avec l'index de l'entrée, comme `plugins[1] plugin.json → json: ...`.

904 

905Le tableau couvre les messages qui arrêtent la validation et deux avertissements, `No frontmatter block found` et `Unknown field '<key>'`, qui l'arrêtent uniquement lorsque vous passez `--strict`. Les autres avertissements, comme une description manquante, ne sont pas répertoriés.

906 

907| Message | Cause | Correction |

908| :------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- |

909| `File not found: <path>` | Le chemin n'a pas de manifeste, ou n'existe pas. | Exécutez la commande par rapport à la racine du plugin ou de la marketplace, le répertoire qui contient `.claude-plugin/`. |

910| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | Le répertoire n'a pas de manifeste `.claude-plugin/`. | Créez le manifeste, ou pointez au bon répertoire. |

911| `Invalid JSON syntax: <parse error>` | Le manifeste, ou `hooks/hooks.json`, n'est pas un JSON valide. | Corrigez le JSON. Jusqu'à ce que vous corrigiez `hooks/hooks.json`, une session charge le plugin sans les hooks dans ce fichier. |

912| `Path not found: <path>. The runtime loader will report this as a load failure.` | Un chemin de composant dans le manifeste n'existe pas. | Corrigez le chemin ou créez le répertoire. |

913| `Path contains ".." which could be a path traversal attempt: <path>` | Un chemin de composant échappe au répertoire du plugin. | Utilisez les chemins à l'intérieur de la racine du plugin. |

914| `Path is a file; skills entries must be directories containing SKILL.md` | Une entrée `skills` pointe vers `SKILL.md` au lieu de son répertoire. | Pointez au répertoire parent, ou `.` pour un `SKILL.md` au niveau racine. |

915| `No frontmatter block found` ou `YAML frontmatter failed to parse: <error>` | Un fichier de skill, agent ou commande a un frontmatter YAML manquant ou invalide. | Ajoutez ou corrigez le frontmatter entre les délimiteurs `---`. Signalé lors de la validation d'un répertoire de plugin. |

916| `Unknown field '<key>'` | Le manifeste a un champ que le schéma ne définit pas. | Supprimez-le, ou utilisez le nom que le message suggère. Claude Code ignore les champs inconnus au moment du chargement. |

917 

918Exécutez la commande à nouveau après chaque correction jusqu'à ce qu'elle n'imprime aucune erreur.

919 

920Les champs `plugin.json` se trouvent sur la [référence du manifeste](/docs/fr/plugins/manifest-reference), et les messages au niveau de la marketplace se trouvent sous [Erreurs de validation de la marketplace](#marketplace-validation-errors).

921 

922<h3 id="plugin-has-conflicting-manifests">

923 `Plugin <name> has conflicting manifests`

924</h3>

925 

926Le plugin échoue à charger avec `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components.`

927 

928Le plugin a son propre `plugin.json`, et son entrée de marketplace définit `strict: false` tout en déclarant également l'un de `commands`, `agents`, `skills`, `hooks`, `outputStyles` ou `themes`. Supprimez ces champs de l'entrée, ou définissez `strict: true` dans l'entrée pour que Claude Code les ajoute à `plugin.json`. Consultez [Mode strict](/docs/fr/plugins/marketplace-reference#strict-mode).

929 

930<h3 id="warning-no-commands-found-in-plugin-custom-directory">

931 `Warning: No commands found in plugin <name> custom directory`

932</h3>

933 

934Lorsque le plugin charge, le journal `claude --debug` à `~/.claude/debug/<session-id>.txt` enregistre `Warning: No commands found in plugin <name> custom directory: <path>. Expected .md files or SKILL.md in subdirectories.` Rien n'apparaît dans la session ou l'onglet **Erreurs**.

935 

936Le chemin `commands` dans le manifeste existe mais ne contient aucun fichier `.md` et aucun `SKILL.md` dans un sous-répertoire. Ajoutez les fichiers de commande, ou supprimez le chemin du manifeste.

937 

938<h2 id="host-a-marketplace">

939 Héberger une marketplace

940</h2>

941 

942Vous publiez une marketplace et un utilisateur signale une erreur, ou votre propre validation échoue. Ces entrées sont pour le propriétaire de la marketplace.

943 

944<h3 id="plugins-with-relative-paths-fail-in-url-based-marketplaces">

945 Les plugins avec des chemins relatifs échouent dans les marketplaces basées sur URL

946</h3>

947 

948Les utilisateurs ont ajouté votre marketplace avec une URL `https://example.com/marketplace.json`. Les installations de plugins dont la `source` est un chemin relatif, comme `./plugins/my-plugin`, échouent avec `its marketplace entry path does not stay inside the marketplace directory`. Les plugins déjà installés échouent à charger avec `Plugin source path refused`. Les deux messages ont une [entrée de référence d'erreur](/docs/fr/errors#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory).

949 

950Lorsqu'un utilisateur ajoute une marketplace basée sur URL, Claude Code télécharge uniquement le fichier `marketplace.json` lui-même. Il ne récupère pas les fichiers de plugin par chemin relatif à partir de ce serveur, donc un chemin relatif dans une entrée pointe vers un répertoire qui n'a jamais été récupéré. Donnez à chaque entrée une source que Claude Code peut récupérer de lui-même, comme un référentiel GitHub :

951 

952```json theme={null}

953{ "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

954```

955 

956Alternativement, hébergez la marketplace dans un référentiel git et dites aux utilisateurs de l'ajouter avec l'URL du référentiel. Pour une source git, Claude Code clone le référentiel entier, donc les chemins relatifs se résolvent. Les types de source se trouvent sur la [référence de la marketplace](/docs/fr/plugins/marketplace-reference).

957 

958<h3 id="marketplace-validation-errors">

959 Erreurs de validation de la marketplace

960</h3>

961 

962Vous avez exécuté `claude plugin validate .` à partir de votre répertoire de marketplace et il a signalé des erreurs ou des avertissements sur le fichier de marketplace lui-même.

963 

964`claude plugin validate` valide également chaque entrée dont la `source` est un chemin local et avertit lorsque la `version` de l'entrée ne correspond pas au manifeste du plugin lui-même.

965 

966Le tableau répertorie les messages au niveau de la marketplace. Les messages au niveau de l'entrée sont les messages de plugin sous [`claude plugin validate` signale des erreurs](#claude-plugin-validate-reports-errors), préfixés avec `plugins[N] plugin.json →`.

967 

968| Message | Type | Correction |

969| :------------------------------------------------------------------------------------------------------------------------ | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- |

970| `Duplicate plugin name "<name>" found in marketplace` | Erreur | Donnez à chaque plugin un `name` unique. |

971| `Path contains "..": <path>` sous `plugins[N].source` | Erreur | Utilisez les chemins relatifs à la racine de la marketplace sans segments `..`. |

972| `Marketplace name cannot contain control or bidirectional-formatting characters` | Erreur | Supprimez le caractère du nom, comme une échappement ou une nouvelle ligne. |

973| `Plugin name cannot contain control or bidirectional-formatting characters` | Erreur | Supprimez le caractère du `name` du plugin. |

974| `Marketplace has no plugins defined` | Avertissement | Ajoutez au moins une entrée à `plugins`. |

975| `No marketplace description provided` | Avertissement | Ajoutez une `description` au niveau supérieur. |

976| `Plugin name "<name>" is not kebab-case` sous `plugins[N] plugin.json → name` | Avertissement | Renommez en lettres minuscules, chiffres et tirets. Claude Code accepte d'autres formes, mais la synchronisation de la marketplace claude.ai les rejette. |

977| `Entry declares version "<a>" but <path>/plugin.json says "<b>"` | Avertissement | Mettez à jour l'entrée pour correspondre à `plugin.json`, qui est autoritaire au moment de l'installation. |

978| `Marketplace name "<name>" is reserved in Claude Desktop` | Avertissement | Renommez la marketplace. La synchronisation de la marketplace gérée de Claude Desktop rejette `org`, `org-provisioned` et `unknown` dans n'importe quelle casse. |

979| `Marketplace name "<name>" is not accepted by Claude Desktop` ou `Plugin name "<name>" is not accepted by Claude Desktop` | Avertissement | Renommez en au maximum 128 caractères de lettres, chiffres, `.`, `_` et `-`, commençant par une lettre ou un chiffre. |

980 

981Avant v2.1.247, un nom de marketplace contenant des caractères de contrôle ou de formatage bidirectionnel était signalé uniquement comme `Marketplace name impersonates an official Anthropic/Claude marketplace`.

982 

983<h2 id="blocked-by-your-organization">

984 Bloqué par votre organisation

985</h2>

986 

987Votre organisation déploie des paramètres gérés qui restreignent les plugins, et une commande a été refusée avec un message de politique. Ces entrées nomment le paramètre derrière chaque refus pour que vous sachiez ce qu'il faut demander à votre administrateur. Pour le côté administrateur, consultez [Gérez les plugins pour votre organisation](/docs/fr/plugins/org).

988 

989<h3 id="marketplace-source-is-blocked-by-enterprise-policy">

990 `Marketplace source '<source>' is blocked by enterprise policy`

991</h3>

992 

993Vous avez exécuté `/plugin marketplace add`, `update` ou une installation, et Claude Code a refusé avec cette ligne. Pour une source GitHub ou git, l'hôte suit la source entre parenthèses, comme dans `'github:owner/repo' (github.com)`.

994 

995Votre administrateur a défini `blockedMarketplaces` ou `strictKnownMarketplaces` dans les paramètres gérés, et cette source n'est pas autorisée. Demandez à votre administrateur d'autoriser la source, ou ajoutez l'une des sources autorisées que le message répertorie.

996 

997Faites correspondre le reste du message pour voir quel type de politique a bloqué la source :

998 

999* **`Allowed sources: <list>`** : le bloc provient de la liste d'autorisation `strictKnownMarketplaces` plutôt que de la liste de blocage `blockedMarketplaces`

1000* **`No external marketplaces are allowed.`** : la liste d'autorisation `strictKnownMarketplaces` est vide

1001* **Un `Tip:` que le raccourci suppose github.com** : la liste d'autorisation autorise un hôte git par nom d'hôte, et le raccourci `owner/repo` que vous avez passé pointe vers github.com. Si le référentiel se trouve sur votre hôte interne, ajoutez-le à nouveau avec son URL complète, comme `git@your-git-host.com:owner/repo.git`

1002 

1003Une marketplace que vous avez ajoutée avant que la politique ne devienne plus restrictive cesse également de s'actualiser, car la politique s'applique à chaque actualisation.

1004 

1005<h3 id="marketplace-is-not-in-the-allowed-marketplace-list">

1006 `Marketplace "<name>" is not in the allowed marketplace list`

1007</h3>

1008 

1009L'onglet **Erreurs** affiche cette ligne, ou `Marketplace "<name>" is blocked by enterprise policy`, pour une marketplace que vous avez déjà enregistrée.

1010 

1011Les mêmes paramètres gérés qui bloquent une [source de marketplace](#marketplace-source-is-blocked-by-enterprise-policy) s'appliquent au moment du chargement. `strictKnownMarketplaces` n'inclut pas cette marketplace, ou `blockedMarketplaces` la nomme, donc Claude Code cesse de la charger et ses plugins. Pour la variante de liste d'autorisation, la ligne de guidance affiche les sources autorisées, ou `Contact your administrator to configure allowed marketplace sources`. Pour la variante de liste de blocage, elle se lit comme `This marketplace source is explicitly blocked by your administrator`.

1012 

1013<h3 id="plugin-is-blocked-by-your-organizations-policy-and-cannot-be-installed">

1014 `Plugin "<name>" is blocked by your organization's policy and cannot be installed`

1015</h3>

1016 

1017Une installation a été refusée avec cette ligne, une activation avec la même ligne se terminant par `cannot be enabled`, ou une installation ou mise à jour avec une nommant la raison : `Plugin "<name>" is from marketplace "<marketplace>", which is blocked by your organization's policy`, ou `Plugin "<name>" depends on "<dep>", which is blocked by your organization's policy`.

1018 

1019Les paramètres gérés bloquent ce plugin, sa marketplace ou une dépendance dont il a besoin. Demandez à votre administrateur quelle entrée s'applique. Une dépendance bloquée signifie que le plugin ne peut pas s'installer jusqu'à ce que la marketplace de la dépendance soit autorisée.

1020 

1021<h3 id="plugin-dir-is-disabled-by-your-organizations-managed-settings-disables">

1022 `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)`

1023</h3>

1024 

1025Vous avez démarré `claude` avec `--plugin-dir`, `--plugin-url`, `--agents` ou `--mcp-config`. Claude Code a quitté avec ce message et `Plugins, custom agents, and MCP servers can only be loaded from sources your administrator has approved.`

1026 

1027Votre administrateur a défini `disableSideloadFlags` dans les paramètres gérés, ce qui désactive les drapeaux qui chargent les plugins, agents et serveurs à partir de chemins arbitraires. Chargez le plugin à partir d'une marketplace approuvée à la place, ou demandez à votre administrateur de supprimer le paramètre.

1028 

1029Un message connexe dans l'onglet **Erreurs** de `/plugin` est `--plugin-dir copy of "<name>" ignored: plugin is locked by managed settings`. Les paramètres gérés activent ou désactivent ce plugin par nom, et Claude Code ignore votre copie `--plugin-dir` de celui-ci pour que le drapeau ne puisse pas remplacer la politique.

1030 

1031<h3 id="plugins-from-claude-skills-are-blocked-by-your-organizations-managed-s">

1032 `Plugins from ~/.claude/skills/ are blocked by your organization's managed settings`

1033</h3>

1034 

1035Vous avez exécuté `claude plugin init` ou `claude plugin enable`, et il s'est arrêté avec cette ligne. Le message nomme `strictKnownMarketplaces or blockedMarketplaces` et demande à votre administrateur d'ajouter `{"source":"skills-dir"}` à `strictKnownMarketplaces` ou de le supprimer de `blockedMarketplaces`.

1036 

1037La source `skills-dir` représente les plugins que Claude Code charge à partir de votre répertoire `~/.claude/skills/`. Demandez à votre administrateur de faire le changement que le message nomme.

1038 

1039<h3 id="command-sourced-plugins-are-disabled-by-your-organizations-managed-set">

1040 `Command-sourced plugins are disabled by your organization's managed settings`

1041</h3>

1042 

1043Vous avez installé ou mis à jour un plugin avec une source `command`, et il s'est arrêté avec cette ligne et `The plugin was not installed or updated and its command was not run.`

1044 

1045Votre administrateur a défini `disableCommandPluginSources`, donc Claude Code refuse d'exécuter la commande déclarée par la marketplace qui produit le plugin. Définir `allowManagedHooksOnly` seul a le même effet lorsque `disableCommandPluginSources` n'est pas défini. Demandez à votre administrateur si le plugin peut être publié à partir d'un type de source que la politique autorise.

1046 

1047<h3 id="marketplace-is-seed-managed">

1048 `Marketplace '<name>' is seed-managed`

1049</h3>

1050 

1051Vous avez exécuté `claude plugin marketplace update <name>`, et il a échoué avec `Marketplace '<name>' is seed-managed (<dir>)` et un conseil de demander à votre administrateur.

1052 

1053Un opérateur a pré-rempli cette marketplace via `CLAUDE_CODE_PLUGIN_SEED_DIR`, et Claude Code traite une marketplace gérée par seed comme en lecture seule. Une mise à jour en masse `marketplace update` la saute et met à jour les autres.

1054 

1055Pour modifier le contenu de la marketplace, demandez à la personne qui maintient l'image seed de la mettre à jour. Pour la procédure, consultez [Ensemencer les conteneurs et CI](/docs/fr/plugins/org#seed-containers-and-ci).

1056 

1057<h2 id="next-steps">

1058 Étapes suivantes

1059</h2>

1060 

1061* [Référence de chargement des plugins](/docs/fr/plugins/loading) : pourquoi les portées, le cache et la précédence se comportent de cette façon

1062* [Référence des commandes de plugin](/docs/fr/plugins/cli-reference) : drapeaux, valeurs par défaut, sortie et codes de sortie pour les commandes `claude plugin`

1063* [Installer et gérer les plugins](/docs/fr/plugins/install) : les étapes d'installation depuis le début

1064* [Gérez les plugins pour votre organisation](/docs/fr/plugins/org#troubleshoot-policy) : dépannage du côté politique pour les administrateurs

Details

135 Activation ou désactivation d'un plugin135 Activation ou désactivation d'un plugin

136</h3>136</h3>

137 137 

138Lorsque vous activez ou désactivez un [plugin](/docs/fr/plugins), ce que le changement coûte dépend des types de composants que le plugin fournit. Les cas ci-dessous couvrent chaque type de composant, quand Claude Code applique le changement, et ce qui se passe lorsque vous désactivez un plugin à nouveau dans la même session.138Lorsque vous activez ou désactivez un [plugin](/docs/fr/plugins/overview), ce que le changement coûte dépend des types de composants que le plugin fournit. Les cas ci-dessous couvrent chaque type de composant, quand Claude Code applique le changement, et ce qui se passe lorsque vous désactivez un plugin à nouveau dans la même session.

139 139 

140<h4 id="plugin-components-that-keep-the-cache">140<h4 id="plugin-components-that-keep-the-cache">

141 Composants de plugin qui conservent le cache141 Composants de plugin qui conservent le cache


147 Plugins qui fournissent des serveurs MCP147 Plugins qui fournissent des serveurs MCP

148</h4>148</h4>

149 149 

150Lorsque vous activez ou désactivez un plugin qui fournit des [serveurs MCP](/docs/fr/plugins-reference#mcp-servers), Claude Code suit les mêmes règles que lorsque vous [connectez ou déconnectez un serveur MCP](#connecting-or-disconnecting-an-mcp-server) :150Lorsque vous activez ou désactivez un plugin qui fournit des [serveurs MCP](/docs/fr/plugins/components#mcp-servers), Claude Code suit les mêmes règles que lorsque vous [connectez ou déconnectez un serveur MCP](#connecting-or-disconnecting-an-mcp-server) :

151 151 

152* Si Claude Code diffère les outils du serveur, il conserve le cache.152* Si Claude Code diffère les outils du serveur, il conserve le cache.

153* Si Claude Code les charge dans le préfixe, la prochaine requête relit l'intégralité de la conversation.153* Si Claude Code les charge dans le préfixe, la prochaine requête relit l'intégralité de la conversation.


156 Plugins d'intelligence de code156 Plugins d'intelligence de code

157</h4>157</h4>

158 158 

159Lorsque vous activez un [plugin d'intelligence de code](/docs/fr/discover-plugins#code-intelligence), Claude obtient l'[outil LSP](/docs/fr/tools-reference#lsp-tool-behavior).159Lorsque vous activez un [plugin d'intelligence de code](/docs/fr/plugins/code-intelligence), Claude obtient l'[outil LSP](/docs/fr/tools-reference#lsp-tool-behavior).

160 160 

161<h4 id="when-plugin-changes-apply">161<h4 id="when-plugin-changes-apply">

162 Quand les changements de plugin s'appliquent162 Quand les changements de plugin s'appliquent

163</h4>163</h4>

164 164 

165Un changement que vous effectuez dans le menu `/plugin` passe par [`/reload-plugins`](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting), que Claude Code exécute pour vous lorsque vous fermez le menu. Vous payez le coût, qu'il s'agisse d'annonces ajoutées ou d'une relecture complète, au premier tour après l'application du changement. Claude Code peut également appliquer un changement de son propre chef :165Un changement que vous effectuez dans le menu `/plugin` passe par [`/reload-plugins`](/docs/fr/plugins/cli-reference#reload-plugins), que Claude Code exécute pour vous lorsque vous fermez le menu. Vous payez le coût, qu'il s'agisse d'annonces ajoutées ou d'une relecture complète, au premier tour après l'application du changement. Claude Code peut également appliquer un changement de son propre chef :

166 166 

167* Pour un plugin avec une source `command`, Claude Code [peut recharger le plugin lui-même](/docs/fr/plugin-marketplaces#when-claude-code-re-runs-the-command).167* Pour un plugin avec une source `command`, Claude Code [peut recharger le plugin lui-même](/docs/fr/plugins/loading#when-a-command-source-re-runs).

168* Lorsque vous [installez un plugin à partir de l'interface `/plugin`](/docs/fr/discover-plugins#install-plugins), Claude Code peut l'activer pendant l'installation. Le résumé d'installation vous indique s'il l'a fait.168* Lorsque vous [installez un plugin à partir de l'interface `/plugin`](/docs/fr/plugins/install#install-a-plugin), Claude Code peut l'activer pendant l'installation. Le résumé d'installation vous indique s'il l'a fait.

169* Lorsque vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code applique les plugins que les paramètres du nouveau répertoire activent dans le cadre du déplacement, sans l'avertissement de relecture complète qui retient un `/reload-plugins`.169* Lorsque vous [déplacez la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur, Claude Code applique les plugins que les paramètres du nouveau répertoire activent dans le cadre du déplacement, sans l'avertissement de relecture complète qui retient un `/reload-plugins`.

170* Dans les sessions interactives, lorsque vous ajoutez ou supprimez un plugin dans un [dossier de plugins](/docs/fr/plugins#test-your-plugins-locally) que vous avez transmis avec `--plugin-dir`, le changement s'applique immédiatement. Si l'appliquer déclencherait une relecture complète, Claude Code retient le changement à la place et affiche un avis pour exécuter `/reload-plugins`. Nécessite Claude Code v2.1.265 ou ultérieur.170* Dans les sessions interactives, lorsque vous ajoutez ou supprimez un plugin dans un [dossier de plugins](/docs/fr/plugins/create#load-a-directory-or-archive-for-one-session) que vous avez transmis avec `--plugin-dir`, le changement s'applique immédiatement. Si l'appliquer déclencherait une relecture complète, Claude Code retient le changement à la place et affiche un avis pour exécuter `/reload-plugins`. Nécessite Claude Code v2.1.265 ou ultérieur.

171 171 

172Lorsque `/reload-plugins` s'exécute et que la recharge déclencherait une relecture complète, Claude Code affiche un avertissement et n'applique pas la recharge. Exécutez `/reload-plugins --force` pour l'appliquer de toute façon.172Lorsque `/reload-plugins` s'exécute et que la recharge déclencherait une relecture complète, Claude Code affiche un avertissement et n'applique pas la recharge. Exécutez `/reload-plugins --force` pour l'appliquer de toute façon.

173 173 

174`/reload-plugins` s'exécute également dans les sessions sans terminal interactif, comme l'application de bureau, le SDK Agent, et le [mode non interactif](/docs/fr/headless) avec `-p`, lorsque vous le tapez directement dans la session. Nécessite Claude Code v2.1.260 ou ultérieur.174`/reload-plugins` s'exécute également dans les sessions sans terminal interactif, comme l'application de bureau, le SDK Agent, et le [mode non interactif](/docs/fr/headless) avec `-p`, lorsque vous le tapez directement dans la session. Nécessite Claude Code v2.1.260 ou ultérieur.

175 175 

176Dans ces sessions, la recharge applique tout sauf les changements de serveur MCP du plugin, qui [prennent effet dans votre prochaine session](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) et ne coûtent donc jamais une relecture complète en cours de session.176Dans ces sessions, la recharge applique tout sauf les changements de serveur MCP du plugin, qui [prennent effet dans votre prochaine session](/docs/fr/plugins/cli-reference#reload-plugins) et ne coûtent donc jamais une relecture complète en cours de session.

177 177 

178<h4 id="plugins-you-enable-and-then-disable-in-one-session">178<h4 id="plugins-you-enable-and-then-disable-in-one-session">

179 Plugins que vous activez puis désactivez dans une session179 Plugins que vous activez puis désactivez dans une session

Details

626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);

627 };627 };

628 }, []);628 }, []);

629 const SAFE_HREF = /^(\/(?![\/\\\s])|#|https?:\/\/)/;

629 const linkify = s => {630 const linkify = s => {

630 const out = [];631 const out = [];

631 let last = 0;632 let last = 0;

632 const re = /\[([^\]]+)\]\(([^)]+)\)/g;633 const re = /\[([^\]]+)\]\(([^)]+)\)/g;

633 for (let m; m = re.exec(s); ) {634 for (let m; m = re.exec(s); ) {

634 if (m.index > last) out.push(s.slice(last, m.index));635 if (m.index > last) out.push(s.slice(last, m.index));

635 out.push(<a key={m.index} href={doc(m[2])}>{m[1]}</a>);636 out.push(SAFE_HREF.test(m[2]) ? <a key={m.index} href={doc(m[2])}>{m[1]}</a> : m[1]);

636 last = re.lastIndex;637 last = re.lastIndex;

637 }638 }

638 if (last < s.length) out.push(s.slice(last));639 if (last < s.length) out.push(s.slice(last));


776 </div>777 </div>

777 <div className="pl-label">{L.whyWorks}</div>778 <div className="pl-label">{L.whyWorks}</div>

778 <div className="pl-teaches">{linkify(p.teaches)}</div>779 <div className="pl-teaches">{linkify(p.teaches)}</div>

779 {p.nextHref && p.next && <div className="pl-next">780 {p.nextHref && p.next && SAFE_HREF.test(p.nextHref) && <div className="pl-next">

780 <span className="pl-next-label">{L.makeItStick}</span>781 <span className="pl-next-label">{L.makeItStick}</span>

781 <a href={doc(p.nextHref)}>{codeify(p.next)} →</a>782 <a href={doc(p.nextHref)}>{codeify(p.next)} →</a>

782 </div>}783 </div>}


1202 },1203 },

1203 "migrate-a-pattern-across": {1204 "migrate-a-pattern-across": {

1204 title: "Migrer un modèle dans la base de code",1205 title: "Migrer un modèle dans la base de code",

1205 teaches: "Décrivez l'ancien modèle et le nouveau. Demander à Claude d'identifier d'abord chaque endroit signifie que les sites d'appel sont énumérés dans la réponse, afin que vous puissiez vérifier qu'aucun n'a été manqué. Pour une migration sur plusieurs fichiers, exécutez [/batch](/docs/fr/commands). Claude divise le travail en unités pour que vous approuviez, puis les sous-agents d'arrière-plan effectuent les modifications et ouvrent une demande de tirage par unité."1206 teaches: "Décrivez l'ancien modèle et le nouveau. Demander à Claude d'identifier d'abord chaque endroit signifie que les sites d'appel sont énumérés dans la réponse, afin que vous puissiez vérifier qu'aucun n'a été manqué. Pour une migration sur plusieurs fichiers, exécutez [/batch](/docs/fr/commands). Claude divise le travail en unités pour que vous approuviez, puis les sous-agents d'arrière-plan effectuent les modifications."

1206 },1207 },

1207 "optimize-against-a-measurable": {1208 "optimize-against-a-measurable": {

1208 title: "Optimiser par rapport à une cible mesurable",1209 title: "Optimiser par rapport à une cible mesurable",

Details

252<Note>252<Note>

253 Trusted Devices est actuellement en version bêta. Les fonctionnalités et les capacités peuvent évoluer à mesure que l'expérience est affinée.253 Trusted Devices est actuellement en version bêta. Les fonctionnalités et les capacités peuvent évoluer à mesure que l'expérience est affinée.

254 254 

255 Trusted Devices est disponible sur les plans Team et Enterprise. Il est désactivé par défaut jusqu'à ce qu'un propriétaire l'active.255 Trusted Devices est disponible sur les plans Pro, Max, Team et Enterprise et est désactivé par défaut. Sur les plans Team et Enterprise, un propriétaire l'active pour l'organisation. Sur les plans Pro et Max, vous activez vous-même **Require trusted devices** dans vos paramètres, sur la page Cowork ou Account.

256</Note>256</Note>

257 257 

258Trusted Devices est un paramètre à l'échelle de l'organisation qui exige que les membres vérifient leur appareil avant de pouvoir afficher ou contrôler les sessions Remote Control depuis claude.ai, les applications Claude mobiles ou Claude Desktop. Il lie l'accès à Remote Control à un appareil connu et à une authentification récente, pas seulement à un compte connecté.258Trusted Devices exige que chaque membre de votre organisation, ou vous seul sur un plan Pro ou Max, vérifie son appareil avant de pouvoir afficher ou contrôler les sessions Remote Control depuis claude.ai, les applications Claude mobiles ou Claude Desktop. Il lie l'accès à Remote Control à un appareil connu et à une authentification récente, pas seulement à un compte connecté.

259 259 

260Lorsque le paramètre est activé, l'interaction avec une session Remote Control nécessite les deux éléments suivants :260Lorsque le paramètre est activé, l'interaction avec une session Remote Control nécessite les deux éléments suivants :

261 261 


267Le paramètre s'applique uniquement à Remote Control. Le chat Claude régulier, Claude Code dans le terminal et l'utilisation de l'API ne sont pas affectés.267Le paramètre s'applique uniquement à Remote Control. Le chat Claude régulier, Claude Code dans le terminal et l'utilisation de l'API ne sont pas affectés.

268 268 

269<h3 id="enable-trusted-devices-for-your-organization">269<h3 id="enable-trusted-devices-for-your-organization">

270 Activer Trusted Devices pour votre organisation270 Activer Trusted Devices pour une organisation Team ou Enterprise

271</h3>271</h3>

272 272 

273Un propriétaire active le paramètre à partir de la console d'administration Claude Code.273Un propriétaire active le paramètre à partir des paramètres d'organisation claude.ai.

274 274 

275<Steps>275<Steps>

276 <Step title="Ouvrir les paramètres d'administration Claude Code">276 <Step title="Accéder à la page Capabilities">

277 Allez à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). Le bouton **Require trusted devices** apparaît sous le paramètre Remote Control.277 Allez à [**Organization settings > Capabilities > Remote sessions**](https://claude.ai/admin-settings/capabilities). Le bouton bascule **Require trusted devices** apparaît dans cette section.

278 </Step>278 </Step>

279 279 

280 <Step title="Activer Require trusted devices">280 <Step title="Activer Require trusted devices">

sandboxing.md +2 −2

Details

147* Une règle ask `Bash` simple, ou la forme équivalente `Bash(*)`, est ignorée pour les commandes qui s'exécutent sandboxées ; elle s'applique toujours aux commandes qui reviennent au flux de permission régulier. En [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), la règle n'est pas ignorée : elle invite pour les commandes sandboxées aussi, y compris les commandes en lecture seule. Avant v2.1.212, l'ignorance s'appliquait aussi en mode plan147* Une règle ask `Bash` simple, ou la forme équivalente `Bash(*)`, est ignorée pour les commandes qui s'exécutent sandboxées ; elle s'applique toujours aux commandes qui reviennent au flux de permission régulier. En [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), la règle n'est pas ignorée : elle invite pour les commandes sandboxées aussi, y compris les commandes en lecture seule. Avant v2.1.212, l'ignorance s'appliquait aussi en mode plan

148 148 

149<Info>149<Info>

150 Le mode auto-allow fonctionne indépendamment de votre paramètre de mode de permission, sauf en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) et, en mode auto, pour une commande qui porte des [domaines autorisés par commande](#per-command-allowed-domains-in-auto-mode). Même si vous n'êtes pas en mode « accepter les modifications », les commandes Bash sandboxées s'exécutent automatiquement lorsque l'auto-allow est activé. Cela signifie que les commandes Bash qui modifient les fichiers dans les limites du sandbox s'exécutent sans invite, même en mode Manuel, où les outils de modification de fichiers inviteraient.150 Le mode auto-allow fonctionne indépendamment de votre paramètre de mode de permission, sauf en [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode), pour une commande auto mode qui porte des [domaines autorisés par commande](#per-command-allowed-domains-in-auto-mode), et pour l'[examen du classificateur côté serveur](/docs/fr/permission-modes#how-the-classifier-evaluates-actions) des commandes sandboxées en mode auto. Même si vous n'êtes pas en mode « accepter les modifications », les commandes Bash sandboxées s'exécutent automatiquement lorsque l'auto-allow est activé. Cela signifie que les commandes Bash qui modifient les fichiers dans les limites du sandbox s'exécutent sans invite, même en mode Manuel, où les outils de modification de fichiers inviteraient.

151 151 

152 En mode plan, l'auto-allow n'élargit pas les approbations ; consultez [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) pour voir comment Claude Code bloque les commandes pendant que vous planifiez. Avant v2.1.212, l'auto-allow exécutait les commandes sandboxées sans invite en mode plan aussi.152 En mode plan, l'auto-allow n'élargit pas les approbations ; consultez [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) pour voir comment Claude Code bloque les commandes pendant que vous planifiez. Avant v2.1.212, l'auto-allow exécutait les commandes sandboxées sans invite en mode plan aussi.

153</Info>153</Info>


318 Protéger les identifiants318 Protéger les identifiants

319</h3>319</h3>

320 320 

321Le paramètre `sandbox.credentials` déclare les fichiers d'identifiants et les variables d'environnement à protéger des commandes sandboxées. Chaque entrée nomme un chemin de fichier ou une variable d'environnement et un `mode`. Le bloc `credentials` dédié maintient les règles d'identifiants groupées ensemble et séparées des règles générales du système de fichiers. Nécessite Claude Code v2.1.187 ou ultérieur.321Le paramètre `sandbox.credentials` déclare les fichiers d'identifiants et les variables d'environnement à protéger des commandes sandboxées. Chaque entrée nomme un chemin de fichier ou une variable d'environnement et un `mode`. Le bloc `credentials` dédié maintient les règles d'identifiants groupées ensemble et séparées des règles générales du système de fichiers.

322 322 

323Pour les entrées avec `"mode": "deny"`, les chemins de fichiers sont refusés pour les lectures à l'intérieur du sandbox, la même restriction que celle appliquée par `filesystem.denyRead`, et les variables d'environnement sont supprimées avant chaque exécution de commande sandboxée. La protection des fichiers fait partie de la couche du système de fichiers, donc elle ne s'applique pas si vous [désactivez l'isolation du système de fichiers](#disable-filesystem-isolation) ; la protection des variables d'environnement continue de s'appliquer.323Pour les entrées avec `"mode": "deny"`, les chemins de fichiers sont refusés pour les lectures à l'intérieur du sandbox, la même restriction que celle appliquée par `filesystem.denyRead`, et les variables d'environnement sont supprimées avant chaque exécution de commande sandboxée. La protection des fichiers fait partie de la couche du système de fichiers, donc elle ne s'applique pas si vous [désactivez l'isolation du système de fichiers](#disable-filesystem-isolation) ; la protection des variables d'environnement continue de s'appliquer.

324 324 

Details

25 Installer le plugin25 Installer le plugin

26</h2>26</h2>

27 27 

28Dans une session Claude Code en terminal, installez à partir du [marketplace officiel Anthropic](/docs/fr/discover-plugins#official-anthropic-marketplace) :28Dans une session Claude Code en terminal, installez à partir du [marketplace officiel Anthropic](/docs/fr/plugins/anthropic-marketplaces) :

29 29 

30```text theme={null}30```text theme={null}

31/plugin install security-guidance@claude-plugins-official31/plugin install security-guidance@claude-plugins-official


35 35 

36* **Application Claude desktop, session locale ou SSH** : ouvrez le [navigateur de plugins](/docs/fr/desktop#install-plugins) en cliquant sur le bouton **+** à côté de l'invite, puis **Plugins**, puis **Ajouter un plugin**36* **Application Claude desktop, session locale ou SSH** : ouvrez le [navigateur de plugins](/docs/fr/desktop#install-plugins) en cliquant sur le bouton **+** à côté de l'invite, puis **Plugins**, puis **Ajouter un plugin**

37* **Extension VS Code** : installez à partir du [dialogue **Gérer les plugins**](/docs/fr/vs-code#manage-plugins)37* **Extension VS Code** : installez à partir du [dialogue **Gérer les plugins**](/docs/fr/vs-code#manage-plugins)

38* **Sessions cloud** : activez le plugin pour votre compte claude.ai afin que Claude Code le charge en tant que [plugin synchronisé](/docs/fr/plugins-reference#synced-plugins). Une session cloud ne charge pas les plugins à partir de vos paramètres utilisateur ou du fichier `.claude/settings.json` du référentiel, comme l'explique [Ce qui est transféré de votre configuration](/docs/fr/cloud-environments#what-carries-over-from-your-setup)38* **Sessions cloud** : une session cloud ne charge pas les plugins à partir de vos paramètres utilisateur ou du fichier `.claude/settings.json` du référentiel, comme l'explique [Ce qui est transféré de votre configuration](/docs/fr/cloud-environments#what-carries-over-from-your-setup). Pour les plugins que votre organisation distribue via les paramètres gérés, consultez [Gérer les plugins pour votre organisation](/docs/fr/plugins/org)

39 39 

40L'installation en terminal demande une portée. Choisissez la portée utilisateur pour écrire le plugin dans vos paramètres utilisateur, de sorte qu'il se charge dans chaque nouvelle session locale que vous démarrez sur cette machine.40L'installation en terminal demande une portée. Choisissez la portée utilisateur pour écrire le plugin dans vos paramètres utilisateur, de sorte qu'il se charge dans chaque nouvelle session locale que vous démarrez sur cette machine.

41 41 

42Si l'installation échoue, faites correspondre le message que Claude Code signale :42Si l'installation échoue, faites correspondre le message que Claude Code signale :

43 43 

44* `Marketplace "claude-plugins-official" not found` : ajoutez le marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.44* `Marketplace "claude-plugins-official" not found` : ajoutez le marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

45* Le plugin [n'est pas trouvé dans le marketplace](/docs/fr/discover-plugins#install-plugins) : vérifiez le nom du plugin.45* Le plugin [n'est pas trouvé dans le marketplace](/docs/fr/plugins/install#install-a-plugin) : vérifiez le nom du plugin.

46 46 

47Vérifiez le résumé d'installation. S'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications de plugin sans redémarrer](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) pour activer le plugin dans votre session actuelle.47Vérifiez le résumé d'installation. S'il signale `Run /reload-plugins to activate.`, consultez [Appliquer les modifications de plugin sans redémarrer](/docs/fr/plugins/cli-reference#reload-plugins) pour activer le plugin dans votre session actuelle.

48 48 

49<h3 id="enable-for-your-team-in-local-sessions">49<h3 id="enable-for-your-team-in-local-sessions">

50 Activer pour votre équipe dans les sessions locales50 Activer pour votre équipe dans les sessions locales


279 279 

280* [Code Review](/docs/fr/code-review) : configurer l'examen multi-agent au moment de la PR280* [Code Review](/docs/fr/code-review) : configurer l'examen multi-agent au moment de la PR

281* [Automatiser les flux de travail avec des hooks](/docs/fr/hooks-guide) : créer vos propres vérifications aux mêmes points du cycle de vie281* [Automatiser les flux de travail avec des hooks](/docs/fr/hooks-guide) : créer vos propres vérifications aux mêmes points du cycle de vie

282* [Découvrir et installer des plugins](/docs/fr/discover-plugins#official-anthropic-marketplace) : parcourir d'autres plugins officiels282* [Découvrir les plugins dans la marketplace officielle](/docs/fr/plugins/anthropic-marketplaces#find-plugins-in-the-official-marketplace) : où parcourir les autres plugins officiels

Details

249}249}

250```250```

251 251 

252Vous pouvez également définir cette clé dans un [profil MDM géré par le point de terminaison](/docs/fr/managed-settings#delivery-mechanisms) ou un fichier `managed-settings.json` système pour appliquer un comportement fermé par défaut au premier lancement, avant la livraison de toute charge utile du serveur. Dans Claude Code v2.1.191 ou version ultérieure, cet indicateur est une exception à la [règle de précédence](#settings-precedence) ci-dessus : Claude Code l'honore lorsqu'il est défini dans n'importe quelle source gérée contrôlée par un administrateur même si une charge utile en cache gérée par le serveur est également présente, de sorte qu'une valeur livrée par MDM n'est pas ignorée lorsque des paramètres gérés par le serveur existent.252Vous pouvez également définir cette clé dans un [profil MDM géré par le point de terminaison](/docs/fr/managed-settings#delivery-mechanisms) ou un fichier `managed-settings.json` système pour appliquer un comportement fermé par défaut au premier lancement, avant la livraison de toute charge utile du serveur. Cet indicateur est une exception à la [règle de précédence](#settings-precedence) ci-dessus : Claude Code l'honore lorsqu'il est défini dans n'importe quelle source gérée contrôlée par un administrateur même si une charge utile en cache gérée par le serveur est également présente, de sorte qu'une valeur livrée par MDM n'est pas ignorée lorsque des paramètres gérés par le serveur existent.

253 253 

254Lorsqu'un [`policyHelper`](/docs/fr/settings-reference#policyhelper) fournit des paramètres gérés, sa sortie remplace toute autre source gérée pour les clés que Claude Code lit après le démarrage. Pour les sources à partir desquelles Claude Code lit cette clé, voir [son entrée de paramètres](/docs/fr/settings-reference#forceremotesettingsrefresh). L'entrée `policyHelper` indique quelles sources Claude Code lit le helper et quand il s'exécute.254Lorsqu'un [`policyHelper`](/docs/fr/settings-reference#policyhelper) fournit des paramètres gérés, sa sortie remplace toute autre source gérée pour les clés que Claude Code lit après le démarrage. Pour les sources à partir desquelles Claude Code lit cette clé, voir [son entrée de paramètres](/docs/fr/settings-reference#forceremotesettingsrefresh). L'entrée `policyHelper` indique quelles sources Claude Code lit le helper et quand il s'exécute.

255 255 


338 338 

339Ni les clés renvoyées par un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) ni les informations d'identification de [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) ne déclenchent la récupération des paramètres.339Ni les clés renvoyées par un script [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper) ni les informations d'identification de [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) ne déclenchent la récupération des paramètres.

340 340 

341Dans une session [Cowork](https://claude.com/docs/cowork/overview) dans l'application Claude Desktop, Claude Code ne récupère pas les paramètres gérés par le serveur à partir de la console d'administration claude.ai, même lorsque l'utilisateur se connecte avec un compte d'équipe ou d'entreprise. [Où et quand une politique s'applique](/docs/fr/managed-settings#where-and-when-a-policy-applies) couvre quelle politique atteint les sessions Cowork sur la machine de l'utilisateur et les sessions Cowork distantes. claude.ai applique toujours vos listes [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) et [`blockedMarketplaces`](/docs/fr/settings-reference#blockedmarketplaces) lorsqu'un utilisateur Cowork ajoute une marketplace à partir d'un référentiel git sur claude.ai ou à partir de **Personnaliser** dans l'onglet Cowork. [Comment fonctionnent les restrictions](/docs/fr/plugin-marketplaces#how-restrictions-work) décrit cette vérification.341Dans une session [Cowork](https://claude.com/docs/cowork/overview) dans l'application Claude Desktop, Claude Code ne récupère pas les paramètres gérés par le serveur à partir de la console d'administration claude.ai, même lorsque l'utilisateur se connecte avec un compte d'équipe ou d'entreprise. [Où et quand une politique s'applique](/docs/fr/managed-settings#where-and-when-a-policy-applies) couvre quelle politique atteint les sessions Cowork sur la machine de l'utilisateur et les sessions Cowork distantes. claude.ai applique toujours vos listes [`strictKnownMarketplaces`](/docs/fr/settings-reference#strictknownmarketplaces) et [`blockedMarketplaces`](/docs/fr/settings-reference#blockedmarketplaces) lorsqu'un utilisateur Cowork ajoute une marketplace à partir d'un référentiel git sur claude.ai ou à partir de **Personnaliser** dans l'onglet Cowork. [Comment fonctionnent les restrictions](/docs/fr/plugins/org#restrict-what-users-can-install) décrit cette vérification.

342 342 

343Si vous exportez une variable de fournisseur `CLAUDE_CODE_USE_*` ou une `ANTHROPIC_BASE_URL` non définie par défaut dans votre shell, Claude Code ignore la récupération des paramètres pour vos sessions. [`claude doctor` et `/status` signalent la récupération ignorée et sa cause](#verify-settings-delivery).343Si vous exportez une variable de fournisseur `CLAUDE_CODE_USE_*` ou une `ANTHROPIC_BASE_URL` non définie par défaut dans votre shell, Claude Code ignore la récupération des paramètres pour vos sessions. [`claude doctor` et `/status` signalent la récupération ignorée et sa cause](#verify-settings-delivery).

344 344 

sessions.md +1 −1

Details

37 37 

38Une session reprise restaure la conversation ainsi que l'état enregistré en elle :38Une session reprise restaure la conversation ainsi que l'état enregistré en elle :

39 39 

40* Historique de conversation : l'historique complet, y compris les appels d'outils et les résultats. Un outil qui était toujours en cours d'exécution lorsque le processus précédent s'est terminé, par exemple lors d'un plantage, ne se termine pas ou ne s'exécute pas à nouveau lorsque vous reprenez ; Claude continue sans sa sortie.40* Historique de conversation : l'historique complet, y compris les appels d'outils et les résultats. Un outil qui était toujours en cours d'exécution lorsque le processus précédent s'est terminé, par exemple lors d'un plantage, ne se termine pas ou ne s'exécute pas à nouveau lorsque vous reprenez. Claude voit l'appel marqué comme interrompu avant que son résultat ne soit enregistré et on lui dit de vérifier s'il a pris effet avant de l'exécuter à nouveau, sauf si [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/fr/env-vars#variables) est défini. Avant la v2.1.281, Claude Code supprimait l'appel interrompu de la conversation ou le montrait à Claude comme un appel que vous aviez interrompu.

41* Modèle : la session continue sur le modèle qu'elle utilisait. Le modèle n'est pas restauré lorsqu'il a été retiré ou n'est pas autorisé par `availableModels`, lorsqu'un drapeau `--model` ou une variable d'environnement de la famille `ANTHROPIC_MODEL` en choisit un au lancement, ou sur les fournisseurs qui utilisent des ID de déploiement spécifiques au fournisseur, tels que [Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry](/docs/fr/third-party-integrations) ; voir [configuration du modèle](/docs/fr/model-config#setting-your-model) pour l'ordre de résolution.41* Modèle : la session continue sur le modèle qu'elle utilisait. Le modèle n'est pas restauré lorsqu'il a été retiré ou n'est pas autorisé par `availableModels`, lorsqu'un drapeau `--model` ou une variable d'environnement de la famille `ANTHROPIC_MODEL` en choisit un au lancement, ou sur les fournisseurs qui utilisent des ID de déploiement spécifiques au fournisseur, tels que [Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry](/docs/fr/third-party-integrations) ; voir [configuration du modèle](/docs/fr/model-config#setting-your-model) pour l'ordre de résolution.

42* Agent : une session démarrée avec [`--agent`](/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre `agent` continue en tant que cet agent, en conservant ses restrictions d'outils et son modèle. Passez `--agent` lors de la reprise pour en choisir un différent ; pour l'invite système dans l'un ou l'autre cas, voir [Drapeaux d'invite système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code cherche l'agent dans deux endroits : le répertoire d'origine de la session, à condition que vous ayez [approuvé cet espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust), puis le répertoire depuis lequel vous reprenez, donc un agent limité au projet se charge toujours lorsque vous reprenez depuis un autre répertoire. Si Claude Code ne trouve pas l'agent dans l'un ou l'autre endroit, la session reprend avec les outils par défaut et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available).42* Agent : une session démarrée avec [`--agent`](/docs/fr/sub-agents#invoke-subagents-explicitly) ou le paramètre `agent` continue en tant que cet agent, en conservant ses restrictions d'outils et son modèle. Passez `--agent` lors de la reprise pour en choisir un différent ; pour l'invite système dans l'un ou l'autre cas, voir [Drapeaux d'invite système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code cherche l'agent dans deux endroits : le répertoire d'origine de la session, à condition que vous ayez [approuvé cet espace de travail](/docs/fr/permissions#project-allow-rules-and-workspace-trust), puis le répertoire depuis lequel vous reprenez, donc un agent limité au projet se charge toujours lorsque vous reprenez depuis un autre répertoire. Si Claude Code ne trouve pas l'agent dans l'un ou l'autre endroit, la session reprend avec les outils par défaut et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available).

43* Mode de permission : si vous reprenez depuis un terminal avec `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`, Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas de [mode de permission à la reprise](#permission-mode-on-resume), qui couvre également le sélecteur de sessions, `/resume` et la reprise avec `claude -p`. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.43* Mode de permission : si vous reprenez depuis un terminal avec `claude --continue`, `claude --resume <session-id>` ou `claude --resume <name>` lorsque le nom correspond à une session, sans `-p`, Claude Code restaure le mode de permission dans lequel se trouvait la session, sauf dans les cas de [mode de permission à la reprise](#permission-mode-on-resume), qui couvre également le sélecteur de sessions, `/resume` et la reprise avec `claude -p`. Passez `--permission-mode` ou `--dangerously-skip-permissions` pour remplacer le mode restauré.

settings.md +5 −1

Details

452 Partagez les paramètres avec votre équipe452 Partagez les paramètres avec votre équipe

453</h3>453</h3>

454 454 

455Validez `.claude/settings.json` pour que tout le monde qui clone le référentiel obtienne les mêmes permissions, hooks, télémétrie, et plugins. Chaque coéquipier peut toujours le remplacer pour lui-même dans son propre `.claude/settings.local.json`, donc les exceptions personnelles n'ont pas besoin d'une validation. Pour un fichier d'équipe complet, voir [les paramètres partagés d'une équipe](/docs/fr/settings-example#a-teams-shared-settings).455Validez `.claude/settings.json` pour que tout le monde qui clone le référentiel obtienne les mêmes permissions, hooks, et plugins. Chaque coéquipier peut toujours le remplacer pour lui-même dans son propre `.claude/settings.local.json`, donc les exceptions personnelles n'ont pas besoin d'une validation. Pour un fichier d'équipe complet, voir [les paramètres partagés d'une équipe](/docs/fr/settings-example#a-teams-shared-settings).

456 456 

457Certains de ce que vous validez attendent que chaque coéquipier [fasse confiance au dossier](/docs/fr/permissions#project-allow-rules-and-workspace-trust), et quelques clés ne prennent jamais effet à partir d'un fichier de référentiel ; [Dépannez un paramètre qui ne s'applique pas](#common-cases) couvre les deux.457Certains de ce que vous validez attendent que chaque coéquipier [fasse confiance au dossier](/docs/fr/permissions#project-allow-rules-and-workspace-trust), et quelques clés ne prennent jamais effet à partir d'un fichier de référentiel ; [Dépannez un paramètre qui ne s'applique pas](#common-cases) couvre les deux.

458 458 


743* **Un niveau plus élevé la définit.** Un autre fichier de paramètres, un indicateur `--settings`, ou une source gérée définit la clé au-dessus de la vôtre ; la [pile](#settings-precedence) dit lequel. Un indicateur ou une variable d'environnement peut aussi remplacer la clé de son propre chef, décidé clé par clé ; l'entrée de la clé sur la [référence des paramètres](/docs/fr/settings-reference) dit lequel Claude Code utilise, et l'[entrée `env`](/docs/fr/settings-reference#env) couvre une valeur `env` gérée par rapport à une exportation shell.743* **Un niveau plus élevé la définit.** Un autre fichier de paramètres, un indicateur `--settings`, ou une source gérée définit la clé au-dessus de la vôtre ; la [pile](#settings-precedence) dit lequel. Un indicateur ou une variable d'environnement peut aussi remplacer la clé de son propre chef, décidé clé par clé ; l'entrée de la clé sur la [référence des paramètres](/docs/fr/settings-reference) dit lequel Claude Code utilise, et l'[entrée `env`](/docs/fr/settings-reference#env) couvre une valeur `env` gérée par rapport à une exportation shell.

744* **Une clé de sécurité garde sa valeur stricte.** Pour quelques clés, Claude Code honore la valeur restrictive à partir de n'importe quel fichier, donc un `true` de projet pour [`disableClaudeAiConnectors`](/docs/fr/settings-reference#disableclaudeaiconnectors) reste activé ; voir [Exceptions à la précédence des paramètres gérés](#exceptions-to-managed-settings-precedence).744* **Une clé de sécurité garde sa valeur stricte.** Pour quelques clés, Claude Code honore la valeur restrictive à partir de n'importe quel fichier, donc un `true` de projet pour [`disableClaudeAiConnectors`](/docs/fr/settings-reference#disableclaudeaiconnectors) reste activé ; voir [Exceptions à la précédence des paramètres gérés](#exceptions-to-managed-settings-precedence).

745* **Le fichier ne peut pas définir cette valeur.** Les valeurs [`permissions.defaultMode`](/docs/fr/settings-reference#permissions-defaultmode) `auto` et `bypassPermissions` ne prennent pas effet à partir des paramètres de projet ou locaux ; définissez-les dans les paramètres utilisateur ou gérés à la place, ou passez `--permission-mode` pour une session. Avant v2.1.257, `bypassPermissions` prenait effet à partir de n'importe quel fichier.745* **Le fichier ne peut pas définir cette valeur.** Les valeurs [`permissions.defaultMode`](/docs/fr/settings-reference#permissions-defaultmode) `auto` et `bypassPermissions` ne prennent pas effet à partir des paramètres de projet ou locaux ; définissez-les dans les paramètres utilisateur ou gérés à la place, ou passez `--permission-mode` pour une session. Avant v2.1.257, `bypassPermissions` prenait effet à partir de n'importe quel fichier.

746 

747 Une variable d'exportation de télémétrie dans un bloc [`env`](/docs/fr/settings-reference#env) ne prend pas effet à partir des paramètres de projet ou locaux non plus, à part quelques valeurs off. [Variables que Claude Code ignore dans `env`](/docs/fr/settings-reference#variables-claude-code-ignores-in-env) énumère les variables et ces valeurs.

746* **Le fichier est cassé.** Du JSON invalide ou une valeur rejetée fait que Claude Code ignore le fichier ou l'entrée ; voir [Réparez un fichier de paramètres cassé](#fix-a-broken-settings-file).748* **Le fichier est cassé.** Du JSON invalide ou une valeur rejetée fait que Claude Code ignore le fichier ou l'entrée ; voir [Réparez un fichier de paramètres cassé](#fix-a-broken-settings-file).

747 749 

748<h4 id="a-change-you-made-in-claude-code-is-lost-in-new-sessions">750<h4 id="a-change-you-made-in-claude-code-is-lost-in-new-sessions">


766Deux choses empêchent une clé dans `.claude/settings.json` de s'appliquer pour tout le monde qui la clone :768Deux choses empêchent une clé dans `.claude/settings.json` de s'appliquer pour tout le monde qui la clone :

767 769 

768* **Claude Code ignore la clé dans un fichier de référentiel.** Cherchez `User, local, or managed`, `User or managed`, `Managed`, ou `Global config` dans la colonne Scope de l'[index des paramètres](/docs/fr/settings-reference#settings-index). Ces clés ne s'appliquent jamais à partir du fichier partagé, à part quelques-unes qu'un fichier de référentiel peut toujours désactiver. Chacune de ces entrées le dit sur sa ligne Scope. Les clés `Global config` s'appliquent uniquement à partir de `~/.claude.json`.770* **Claude Code ignore la clé dans un fichier de référentiel.** Cherchez `User, local, or managed`, `User or managed`, `Managed`, ou `Global config` dans la colonne Scope de l'[index des paramètres](/docs/fr/settings-reference#settings-index). Ces clés ne s'appliquent jamais à partir du fichier partagé, à part quelques-unes qu'un fichier de référentiel peut toujours désactiver. Chacune de ces entrées le dit sur sa ligne Scope. Les clés `Global config` s'appliquent uniquement à partir de `~/.claude.json`.

771 

772 À l'intérieur de la clé `env`, les variables d'exportation de télémétrie ne s'appliquent jamais à partir du fichier partagé non plus, à part quelques valeurs off ; voir [Variables que Claude Code ignore dans `env`](/docs/fr/settings-reference#variables-claude-code-ignores-in-env).

769* **La clé attend la confiance.** Les règles `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces`, et la plupart des valeurs [`env`](/docs/fr/settings-reference#env) s'appliquent uniquement après que chaque coéquipier [fasse confiance au dossier](/docs/fr/permissions#project-allow-rules-and-workspace-trust). Jusqu'à ce qu'ils le fassent, ils voient toujours des invites et n'obtiennent pas les plugins d'une marketplace que le fichier déclare. Les règles `deny` et `ask` s'appliquent immédiatement.773* **La clé attend la confiance.** Les règles `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces`, et la plupart des valeurs [`env`](/docs/fr/settings-reference#env) s'appliquent uniquement après que chaque coéquipier [fasse confiance au dossier](/docs/fr/permissions#project-allow-rules-and-workspace-trust). Jusqu'à ce qu'ils le fassent, ils voient toujours des invites et n'obtiennent pas les plugins d'une marketplace que le fichier déclare. Les règles `deny` et `ask` s'appliquent immédiatement.

770 774 

771<h4 id="permission-rules-combine-differently-than-you-expected">775<h4 id="permission-rules-combine-differently-than-you-expected">

Details

98 Paramètres partagés d'une équipe98 Paramètres partagés d'une équipe

99</h2>99</h2>

100 100 

101Les paramètres partagés d'une équipe, validés dans le référentiel afin que tous ceux qui le clonent obtiennent les mêmes permissions, hooks, télémétrie et marketplace de plugins. Enregistrez un fichier comme celui-ci à `.claude/settings.json` en haut du référentiel. Ce qu'il faut savoir avant de valider un :101Les paramètres partagés d'une équipe, validés dans le référentiel afin que tous ceux qui le clonent obtiennent les mêmes permissions, hooks et marketplace de plugins. Enregistrez un fichier comme celui-ci à `.claude/settings.json` en haut du référentiel. Ce qu'il faut savoir avant de valider un :

102 102 

103* **Les sessions cloud le lisent aussi.** Une [session cloud](/docs/fr/settings#settings-in-cloud-sessions) démarre à partir d'un clone du référentiel, donc le fichier validé s'applique également là.103* **Les sessions cloud le lisent aussi.** Une [session cloud](/docs/fr/settings#settings-in-cloud-sessions) démarre à partir d'un clone du référentiel, donc le fichier validé s'applique également là.

104* **La télémétrie va dans les paramètres gérés ou personnels.** Claude Code ignore les [variables d'exportateur OpenTelemetry](/docs/fr/settings-reference#variables-claude-code-ignores-in-env) dans les fichiers de paramètres d'un référentiel, à l'exception de certaines valeurs qui désactivent la télémétrie. Définissez-les dans les [paramètres gérés](/docs/fr/monitoring-usage#administrator-configuration) de votre organisation, ou dans le fichier `~/.claude/settings.json` de chaque personne.

104* **Les règles d'autorisation attendent la confiance.** Les règles d'autorisation et les entrées `extraKnownMarketplaces` prennent effet après que chaque personne [fasse confiance à ce dossier lui-même](/docs/fr/permissions#project-allow-rules-and-workspace-trust), pas seulement à un dossier parent ; les règles de refus et de demande s'appliquent dans chaque session, de confiance ou non.105* **Les règles d'autorisation attendent la confiance.** Les règles d'autorisation et les entrées `extraKnownMarketplaces` prennent effet après que chaque personne [fasse confiance à ce dossier lui-même](/docs/fr/permissions#project-allow-rules-and-workspace-trust), pas seulement à un dossier parent ; les règles de refus et de demande s'appliquent dans chaque session, de confiance ou non.

105* **Le hook est un script dans le référentiel.** Le hook de ce fichier exécute `.claude/hooks/block-rm.sh` ; [Comment un hook se résout](/docs/fr/hooks#how-a-hook-resolves) explique comment l'écrire.106* **Le hook est un script dans le référentiel.** Le hook de ce fichier exécute `.claude/hooks/block-rm.sh` ; [Comment un hook se résout](/docs/fr/hooks#how-a-hook-resolves) explique comment l'écrire.

106* **Les règles correspondent à la commande et au chemin tels qu'écrits.** `Bash(git push *)` ne correspond pas à [`git -C . push`](/docs/fr/permissions#bash-rule-limits). `Read(./.env)` seul arrête les outils de fichier et les commandes qui nomment le fichier, comme `cat .env`, mais pas [`grep -r` exécuté sur le répertoire](/docs/fr/permissions#read-and-edit) ; le bloc `sandbox` dans ce fichier comble cette lacune, car le sandbox [ajoute vos chemins de refus `Read`](/docs/fr/settings-reference#sandbox-filesystem-denyread) à ce que chaque commande en sandbox ne peut pas lire.107* **Les règles correspondent à la commande et au chemin tels qu'écrits.** `Bash(git push *)` ne correspond pas à [`git -C . push`](/docs/fr/permissions#bash-rule-limits). `Read(./.env)` seul arrête les outils de fichier et les commandes qui nomment le fichier, comme `cat .env`, mais pas [`grep -r` exécuté sur le répertoire](/docs/fr/permissions#read-and-edit) ; le bloc `sandbox` dans ce fichier comble cette lacune, car le sandbox [ajoute vos chemins de refus `Read`](/docs/fr/settings-reference#sandbox-filesystem-denyread) à ce que chaque commande en sandbox ne peut pas lire.


124 "Read(./secrets/**)"125 "Read(./secrets/**)"

125 ]126 ]

126 },127 },

127 "env": {

128 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

129 "OTEL_METRICS_EXPORTER": "otlp",

130 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

131 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

132 },

133 "hooks": {128 "hooks": {

134 "PreToolUse": [129 "PreToolUse": [

135 {130 {


194 "Read(./secrets/**)"189 "Read(./secrets/**)"

195 ]190 ]

196 },191 },

197 // Envoyez les métriques OpenTelemetry au collecteur de l'équipe via gRPC ; remplacez le point de terminaison par l'URL de votre collecteur

198 "env": {

199 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

200 "OTEL_METRICS_EXPORTER": "otlp",

201 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

202 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

203 },

204 // Avant chaque commande Bash, exécutez un script dans le référentiel qui peut la bloquer192 // Avant chaque commande Bash, exécutez un script dans le référentiel qui peut la bloquer

205 "hooks": {193 "hooks": {

206 "PreToolUse": [194 "PreToolUse": [

Details

626| [`axScreenReader`](#axscreenreader) | Rendez la [sortie accessible aux lecteurs d'écran](/docs/fr/accessibility) | Interface and terminal | Any file |626| [`axScreenReader`](#axscreenreader) | Rendez la [sortie accessible aux lecteurs d'écran](/docs/fr/accessibility) | Interface and terminal | Any file |

627| [`bashEditDiffEnabled`](#basheditdiffenabled) | Enregistrez les [fichiers qui ont changé pendant l'exécution d'une commande Bash](/docs/fr/hooks#bash) dans chaque mode de permission | Interface and terminal | User or managed |627| [`bashEditDiffEnabled`](#basheditdiffenabled) | Enregistrez les [fichiers qui ont changé pendant l'exécution d'une commande Bash](/docs/fr/hooks#bash) dans chaque mode de permission | Interface and terminal | User or managed |

628| [`bashOutputMaxChars`](#bashoutputmaxchars) | Définissez la quantité de [sortie](/docs/fr/tools-reference#output-limits) d'une commande réussie que Claude reçoit en ligne | Memory and context | Any file |628| [`bashOutputMaxChars`](#bashoutputmaxchars) | Définissez la quantité de [sortie](/docs/fr/tools-reference#output-limits) d'une commande réussie que Claude reçoit en ligne | Memory and context | Any file |

629| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquez les sources du [marché de plugins](/docs/fr/plugin-marketplaces) pour votre organisation | Plugins and skills | Managed |629| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquez les sources du [marché de plugins](/docs/fr/plugins/overview) pour votre organisation | Plugins and skills | Managed |

630| [`browserExternalPageTools`](#browserexternalpagetools) | Gardez les outils de Claude hors des pages externes dans le volet [Bureau](/docs/fr/desktop) Browser | Tools | Managed |630| [`browserExternalPageTools`](#browserexternalpagetools) | Gardez les outils de Claude hors des pages externes dans le volet [Bureau](/docs/fr/desktop) Browser | Tools | Managed |

631| [`channelsEnabled`](#channelsenabled) | Autorisez les [canaux](/docs/fr/channels#enable-channels-for-your-organization) pour votre organisation | Plugins and skills | Managed |631| [`channelsEnabled`](#channelsenabled) | Autorisez les [canaux](/docs/fr/channels#enable-channels-for-your-organization) pour votre organisation | Plugins and skills | Managed |

632| [`claudeMd`](#claudemd) | Injectez les instructions [CLAUDE.md](/docs/fr/memory#deploy-organization-wide-claude-md) à l'échelle de l'organisation à partir des paramètres gérés | Memory and context | Managed |632| [`claudeMd`](#claudemd) | Injectez les instructions [CLAUDE.md](/docs/fr/memory#deploy-organization-wide-claude-md) à l'échelle de l'organisation à partir des paramètres gérés | Memory and context | Managed |


647| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limitez le volet [Bureau](/docs/fr/desktop) Browser à localhost pour les personnes et Claude | Tools | Managed |647| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limitez le volet [Bureau](/docs/fr/desktop) Browser à localhost pour les personnes et Claude | Tools | Managed |

648| [`disableBundledSkills`](#disablebundledskills) | Désactivez les [compétences](/docs/fr/skills#bundled-skills) et les [flux de travail](/docs/fr/workflows) inclus avec Claude Code | Plugins and skills | Any file |648| [`disableBundledSkills`](#disablebundledskills) | Désactivez les [compétences](/docs/fr/skills#bundled-skills) et les [flux de travail](/docs/fr/workflows) inclus avec Claude Code | Plugins and skills | Any file |

649| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Désactivez les [connecteurs claude.ai](/docs/fr/mcp#disable-claude-ai-connectors) pour que Claude Code ne les récupère pas | MCP | Any file |649| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Désactivez les [connecteurs claude.ai](/docs/fr/mcp#disable-claude-ai-connectors) pour que Claude Code ne les récupère pas | MCP | Any file |

650| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloquez les [plugins](/docs/fr/plugins) qui s'installent en exécutant une commande déclarée par le marché | Plugins and skills | Managed |650| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloquez les [plugins](/docs/fr/plugins/overview) qui s'installent en exécutant une commande déclarée par le marché | Plugins and skills | Managed |

651| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Empêchez Claude Code d'enregistrer le gestionnaire [`claude-cli://`](/docs/fr/deep-links) | Remote, desktop, and notifications | Any file |651| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Empêchez Claude Code d'enregistrer le gestionnaire [`claude-cli://`](/docs/fr/deep-links) | Remote, desktop, and notifications | Any file |

652| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Désactivez les [sessions Desktop Code](/docs/fr/desktop#local-sessions-on-managed-devices) qui s'exécutent sur l'appareil, en laissant SSH à d'autres hôtes et au cloud | Remote, desktop, and notifications | Managed |652| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Désactivez les [sessions Desktop Code](/docs/fr/desktop#local-sessions-on-managed-devices) qui s'exécutent sur l'appareil, en laissant SSH à d'autres hôtes et au cloud | Remote, desktop, and notifications | Managed |

653| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rejetez les serveurs spécifiques du [`.mcp.json`](/docs/fr/mcp#project-scope) d'un projet | MCP | Any file |653| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rejetez les serveurs spécifiques du [`.mcp.json`](/docs/fr/mcp#project-scope) d'un projet | MCP | Any file |

654| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloquez les outils de Claude dans le volet [Bureau](/docs/fr/desktop) iOS Simulator | Tools | Managed |654| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloquez les outils de Claude dans le volet [Bureau](/docs/fr/desktop) iOS Simulator | Tools | Managed |

655| [`disableRemoteControl`](#disableremotecontrol) | Désactivez [Remote Control](/docs/fr/remote-control) partout où il peut démarrer | Remote, desktop, and notifications | Any file |655| [`disableRemoteControl`](#disableremotecontrol) | Désactivez [Remote Control](/docs/fr/remote-control) partout où il peut démarrer | Remote, desktop, and notifications | Any file |

656| [`disableSideloadFlags`](#disablesideloadflags) | Rejetez les drapeaux CLI qui chargent les [plugins](/docs/fr/plugins), les [sous-agents](/docs/fr/sub-agents), et les [serveurs MCP](/docs/fr/mcp) | Enterprise and managed settings | Managed |656| [`disableSideloadFlags`](#disablesideloadflags) | Rejetez les drapeaux CLI qui chargent les [plugins](/docs/fr/plugins/overview), les [sous-agents](/docs/fr/sub-agents), et les [serveurs MCP](/docs/fr/mcp) | Enterprise and managed settings | Managed |

657| [`disableSkillShellExecution`](#disableskillshellexecution) | Empêchez les [compétences](/docs/fr/skills) et les commandes personnalisées d'exécuter le shell en ligne | Plugins and skills | Any file |657| [`disableSkillShellExecution`](#disableskillshellexecution) | Empêchez les [compétences](/docs/fr/skills) et les commandes personnalisées d'exécuter le shell en ligne | Plugins and skills | Any file |

658| [`disableWorkflows`](#disableworkflows) | Désactivez les [flux de travail dynamiques](/docs/fr/workflows) pour tout le monde ; utilisez `enableWorkflows` pour vous-même | Hooks and automation | Any file |658| [`disableWorkflows`](#disableworkflows) | Désactivez les [flux de travail dynamiques](/docs/fr/workflows) pour tout le monde ; utilisez `enableWorkflows` pour vous-même | Hooks and automation | Any file |

659| [`editorMode`](#editormode) | Utilisez les [liaisons de touches vim](/docs/fr/interactive-mode#vim-editor-mode) dans l'invite d'entrée | Interface and terminal | Any file |659| [`editorMode`](#editormode) | Utilisez les [liaisons de touches vim](/docs/fr/interactive-mode#vim-editor-mode) dans l'invite d'entrée | Interface and terminal | Any file |


662| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Approuvez chaque serveur dans les fichiers [`.mcp.json`](/docs/fr/mcp#project-server-approvals-and-workspace-trust) du projet sans invite | MCP | Any file |662| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Approuvez chaque serveur dans les fichiers [`.mcp.json`](/docs/fr/mcp#project-server-approvals-and-workspace-trust) du projet sans invite | MCP | Any file |

663| [`enableArtifact`](#enableartifact) | Désactivez l'[outil Artifact](/docs/fr/artifacts) avec un `false` dans n'importe quel fichier ; aucun fichier ne peut le réactiver | Remote, desktop, and notifications | Any file |663| [`enableArtifact`](#enableartifact) | Désactivez l'[outil Artifact](/docs/fr/artifacts) avec un `false` dans n'importe quel fichier ; aucun fichier ne peut le réactiver | Remote, desktop, and notifications | Any file |

664| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Approuvez les serveurs spécifiques du [`.mcp.json`](/docs/fr/mcp#project-server-approvals-and-workspace-trust) d'un projet | MCP | Any file |664| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Approuvez les serveurs spécifiques du [`.mcp.json`](/docs/fr/mcp#project-server-approvals-and-workspace-trust) d'un projet | MCP | Any file |

665| [`enabledPlugins`](#enabledplugins) | Activez ou désactivez les [plugins](/docs/fr/plugins) individuels par portée | Plugins and skills | Any file |665| [`enabledPlugins`](#enabledplugins) | Activez ou désactivez les [plugins](/docs/fr/plugins/overview) individuels par portée | Plugins and skills | Any file |

666| [`enableWorkflows`](#enableworkflows) | Activez ou désactivez les [flux de travail dynamiques](/docs/fr/workflows) par rapport à la valeur par défaut de votre plan | Hooks and automation | Any file |666| [`enableWorkflows`](#enableworkflows) | Activez ou désactivez les [flux de travail dynamiques](/docs/fr/workflows) par rapport à la valeur par défaut de votre plan | Hooks and automation | Any file |

667| [`enforceAvailableModels`](#enforceavailablemodels) | Gardez le [choix par défaut `/model`](/docs/fr/model-config#enforce-the-allowlist-for-the-default-model) dans votre liste d'autorisation `availableModels` | Model and responses | Any file |667| [`enforceAvailableModels`](#enforceavailablemodels) | Gardez le [choix par défaut `/model`](/docs/fr/model-config#enforce-the-allowlist-for-the-default-model) dans votre liste d'autorisation `availableModels` | Model and responses | Any file |

668| [`env`](#env) | Définissez les [variables d'environnement](/docs/fr/env-vars#in-settings-files) pour chaque session et ses sous-processus | Memory and context | Any file |668| [`env`](#env) | Définissez les [variables d'environnement](/docs/fr/env-vars#in-settings-files) pour chaque session et ses sous-processus | Memory and context | Any file |

669| [`externalEditorContext`](#externaleditorcontext) | Affichez la dernière réponse de Claude en tant que commentaires quand vous appuyez sur [Ctrl+G](/docs/fr/interactive-mode#general-controls) pour éditer | Global config settings | Global config |669| [`externalEditorContext`](#externaleditorcontext) | Affichez la dernière réponse de Claude en tant que commentaires quand vous appuyez sur [Ctrl+G](/docs/fr/interactive-mode#general-controls) pour éditer | Global config settings | Global config |

670| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Enregistrez les [marchés](/docs/fr/plugin-marketplaces) pour un référentiel ou une organisation | Plugins and skills | Any file |670| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Enregistrez les [marchés](/docs/fr/plugins/overview) pour un référentiel ou une organisation | Plugins and skills | Any file |

671| [`fallbackModel`](#fallbackmodel) | Nommez les [modèles de secours](/docs/fr/model-config#fallback-model-chains) pour quand le principal est surchargé | Model and responses | Any file |671| [`fallbackModel`](#fallbackmodel) | Nommez les [modèles de secours](/docs/fr/model-config#fallback-model-chains) pour quand le principal est surchargé | Model and responses | Any file |

672| [`fastMode`](#fastmode) | Activez le [mode rapide](/docs/fr/fast-mode) pour les sessions où il est disponible | Model and responses | Any file |672| [`fastMode`](#fastmode) | Activez le [mode rapide](/docs/fr/fast-mode) pour les sessions où il est disponible | Model and responses | Any file |

673| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Exigez que les gens activent le [mode rapide](/docs/fr/fast-mode) à chaque session | Model and responses | Any file |673| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Exigez que les gens activent le [mode rapide](/docs/fr/fast-mode) à chaque session | Model and responses | Any file |


712| [`permissions.deny`](#permissions-deny) | Bloquez les [utilisations d'outils](/docs/fr/permissions#permission-rule-syntax) listées, y compris les lectures de fichiers qui contiennent des secrets | Permission settings | Any file |712| [`permissions.deny`](#permissions-deny) | Bloquez les [utilisations d'outils](/docs/fr/permissions#permission-rule-syntax) listées, y compris les lectures de fichiers qui contiennent des secrets | Permission settings | Any file |

713| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Empêchez quiconque d'entrer dans le [mode bypassPermissions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | Any file |713| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Empêchez quiconque d'entrer dans le [mode bypassPermissions](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | Any file |

714| [`plansDirectory`](#plansdirectory) | Choisissez où le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) écrit les fichiers de plan | Memory and context | Any file |714| [`plansDirectory`](#plansdirectory) | Choisissez où le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode) écrit les fichiers de plan | Memory and context | Any file |

715| [`pluginConfigs`](#pluginconfigs) | Stockez les réponses que vous avez données à la boîte de dialogue de configuration d'un [plugin](/docs/fr/plugins) | Plugins and skills | User or managed |715| [`pluginConfigs`](#pluginconfigs) | Stockez les réponses que vous avez données à la boîte de dialogue de configuration d'un [plugin](/docs/fr/plugins/overview) | Plugins and skills | User or managed |

716| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Choisissez les [marchés](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions) qui peuvent afficher les suggestions d'installation de plugins dans `/plugin` | Plugins and skills | Managed |716| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Choisissez les [marchés](/docs/fr/plugins/org#restrict-what-users-can-install) qui peuvent afficher les suggestions d'installation de plugins dans `/plugin` | Plugins and skills | Managed |

717| [`pluginTrustMessage`](#plugintrustmessage) | Ajoutez votre propre texte à l'avertissement de confiance du [plugin](/docs/fr/plugins) | Plugins and skills | Managed |717| [`pluginTrustMessage`](#plugintrustmessage) | Ajoutez votre propre texte à l'avertissement de confiance du [plugin](/docs/fr/plugins/overview) | Plugins and skills | Managed |

718| [`policyHelper`](#policyhelper) | Exécutez un exécutable qui calcule les [paramètres gérés](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) au démarrage | Enterprise and managed settings | Managed |718| [`policyHelper`](#policyhelper) | Exécutez un exécutable qui calcule les [paramètres gérés](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) au démarrage | Enterprise and managed settings | Managed |

719| [`policyHelper.path`](#policyhelper-path) | Nommez l'[exécutable d'aide](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) que Claude Code exécute | Enterprise and managed settings | Managed |719| [`policyHelper.path`](#policyhelper-path) | Nommez l'[exécutable d'aide](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) que Claude Code exécute | Enterprise and managed settings | Managed |

720| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Réexécutez l'[aide](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) en arrière-plan à un intervalle | Enterprise and managed settings | Managed |720| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Réexécutez l'[aide](/docs/fr/managed-settings#compute-the-policy-with-a-helper-program) en arrière-plan à un intervalle | Enterprise and managed settings | Managed |


785| [`sshConfigs`](#sshconfigs) | Ajoutez les [connexions SSH](/docs/fr/desktop#pre-configure-ssh-connections-for-your-team) à la liste déroulante de l'environnement Bureau | Remote, desktop, and notifications | User or managed |785| [`sshConfigs`](#sshconfigs) | Ajoutez les [connexions SSH](/docs/fr/desktop#pre-configure-ssh-connections-for-your-team) à la liste déroulante de l'environnement Bureau | Remote, desktop, and notifications | User or managed |

786| [`sshHostAllowlist`](#sshhostallowlist) | Limitez les hôtes que les [sessions SSH Bureau](/docs/fr/desktop#restrict-which-ssh-hosts-users-can-connect-to) peuvent atteindre | Remote, desktop, and notifications | Managed |786| [`sshHostAllowlist`](#sshhostallowlist) | Limitez les hôtes que les [sessions SSH Bureau](/docs/fr/desktop#restrict-which-ssh-hosts-users-can-connect-to) peuvent atteindre | Remote, desktop, and notifications | Managed |

787| [`statusLine`](#statusline) | Exécutez votre propre commande pour rendre une [ligne d'état](/docs/fr/statusline) sous l'invite | Interface and terminal | Any file |787| [`statusLine`](#statusline) | Exécutez votre propre commande pour rendre une [ligne d'état](/docs/fr/statusline) sous l'invite | Interface and terminal | Any file |

788| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Liste d'autorisation des sources du [marché](/docs/fr/plugin-marketplaces) que les utilisateurs peuvent ajouter et installer | Plugins and skills | Managed |788| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Liste d'autorisation des sources du [marché](/docs/fr/plugins/overview) que les utilisateurs peuvent ajouter et installer | Plugins and skills | Managed |

789| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloquez les [compétences](/docs/fr/skills), les [agents](/docs/fr/sub-agents), les [hooks](/docs/fr/hooks) et les [serveurs MCP](/docs/fr/mcp) des sources utilisateur et projet | Plugins and skills | Managed |789| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloquez les [compétences](/docs/fr/skills), les [agents](/docs/fr/sub-agents), les [hooks](/docs/fr/hooks) et les [serveurs MCP](/docs/fr/mcp) des sources utilisateur et projet | Plugins and skills | Managed |

790| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Verrouillez les [agents](/docs/fr/sub-agents) aux sources de plugin et gérées | Plugins and skills | Managed |790| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Verrouillez les [agents](/docs/fr/sub-agents) aux sources de plugin et gérées | Plugins and skills | Managed |

791| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Verrouillez les [hooks](/docs/fr/hooks) aux sources de plugin et gérées | Plugins and skills | Managed |791| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Verrouillez les [hooks](/docs/fr/hooks) aux sources de plugin et gérées | Plugins and skills | Managed |


794| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Choisissez la [durée de vie du cache d'invite](/docs/fr/prompt-caching#cache-lifetime) pour les sous-agents et autres demandes en dehors de la conversation principale | Model and responses | Any file |794| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Choisissez la [durée de vie du cache d'invite](/docs/fr/prompt-caching#cache-lifetime) pour les sous-agents et autres demandes en dehors de la conversation principale | Model and responses | Any file |

795| [`subagentStatusLine`](#subagentstatusline) | Réécrivez les lignes dans l'[affichage des tâches du sous-agent](/docs/fr/sub-agents) avec votre propre commande | Interface and terminal | Any file |795| [`subagentStatusLine`](#subagentstatusline) | Réécrivez les lignes dans l'[affichage des tâches du sous-agent](/docs/fr/sub-agents) avec votre propre commande | Interface and terminal | Any file |

796| [`switchModelsOnFlag`](#switchmodelsonflag) | Changez les modèles automatiquement ou mettez en pause quand un [classificateur de sécurité](/docs/fr/model-config#ask-before-switching) signale une demande | Model and responses | Any file |796| [`switchModelsOnFlag`](#switchmodelsonflag) | Changez les modèles automatiquement ou mettez en pause quand un [classificateur de sécurité](/docs/fr/model-config#ask-before-switching) signale une demande | Model and responses | Any file |

797| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Arrêtez de charger les [plugins activés sur votre compte claude.ai](/docs/fr/plugins-reference#synced-plugins) et arrêtez de télécharger les nouveaux | Plugins and skills | User, local, or managed |797| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Arrêtez de charger les [plugins activés sur votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins) et arrêtez de télécharger les nouveaux | Plugins and skills | User, local, or managed |

798| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Arrêtez de charger les [compétences activées sur votre compte claude.ai](/docs/fr/skills#how-synced-skills-behave) et arrêtez de télécharger les nouvelles | Plugins and skills | User, local, or managed |798| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Arrêtez de charger les [compétences activées sur votre compte claude.ai](/docs/fr/skills#how-synced-skills-behave) et arrêtez de télécharger les nouvelles | Plugins and skills | User, local, or managed |

799| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Désactivez la coloration syntaxique dans les diffs et les blocs de code | Interface and terminal | Any file |799| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Désactivez la coloration syntaxique dans les diffs et les blocs de code | Interface and terminal | Any file |

800| [`taskOutputMaxChars`](#taskoutputmaxchars) | Supprimé dans v2.1.277, ainsi que l'outil `TaskOutput` qu'il dimensionnait | Memory and context | Any file |800| [`taskOutputMaxChars`](#taskoutputmaxchars) | Supprimé dans v2.1.277, ainsi que l'outil `TaskOutput` qu'il dimensionnait | Memory and context | Any file |


2256 `sandbox.credentials`2256 `sandbox.credentials`

2257</h3>2257</h3>

2258 2258 

2259Déclarez les fichiers d'identifiants et les variables d'environnement à [protéger des commandes en sandbox](/docs/fr/sandboxing#protect-credentials). Chaque entrée nomme un fichier `path` ou une variable `name` et un `mode` : `deny` masque l'identifiant à l'intérieur du sandbox, et `mask` affiche aux commandes en sandbox un espace réservé tandis que le [proxy du sandbox](/docs/fr/sandboxing#mask-credentials) substitue la valeur réelle sur les demandes sortantes. Claude Code protège uniquement les entrées que vous listez ; il n'y a pas de liste de refus d'identifiants intégrée. Nécessite Claude Code v2.1.187 ou ultérieur.2259Déclarez les fichiers d'identifiants et les variables d'environnement à [protéger des commandes en sandbox](/docs/fr/sandboxing#protect-credentials). Chaque entrée nomme un fichier `path` ou une variable `name` et un `mode` : `deny` masque l'identifiant à l'intérieur du sandbox, et `mask` affiche aux commandes en sandbox un espace réservé tandis que le [proxy du sandbox](/docs/fr/sandboxing#mask-credentials) substitue la valeur réelle sur les demandes sortantes. Claude Code protège uniquement les entrées que vous listez ; il n'y a pas de liste de refus d'identifiants intégrée.

2260 2260 

2261* **Scope** : [`Any file`](#scopes). Claude Code honore les entrées `mask`, `allowPlaintextInject`, `awsPairs` et `sigv4` uniquement à partir des paramètres utilisateur, gérés et de l'indicateur `--settings`.2261* **Scope** : [`Any file`](#scopes). Claude Code honore les entrées `mask`, `allowPlaintextInject`, `awsPairs` et `sigv4` uniquement à partir des paramètres utilisateur, gérés et de l'indicateur `--settings`.

2262* **Type** : objet avec `files`, `envVars`, `allowPlaintextInject`, `awsPairs` et `sigv4`2262* **Type** : objet avec `files`, `envVars`, `allowPlaintextInject`, `awsPairs` et `sigv4`


2275}2275}

2276```2276```

2277 2277 

2278La protection de fichier `deny` fait partie de la couche du système de fichiers, donc elle ne s'applique pas lorsque vous [désactivez l'isolation du système de fichiers](/docs/fr/sandboxing#disable-filesystem-isolation) ; la protection de variable d'environnement s'applique toujours. Nécessite Claude Code v2.1.187 ou ultérieur.2278La protection de fichier `deny` fait partie de la couche du système de fichiers, donc elle ne s'applique pas lorsque vous [désactivez l'isolation du système de fichiers](/docs/fr/sandboxing#disable-filesystem-isolation) ; la protection de variable d'environnement s'applique toujours.

2279 2279 

2280<h4 id="invalid-credential-entries-in-managed-settings">2280<h4 id="invalid-credential-entries-in-managed-settings">

2281 Entrées d'identifiants invalides dans les paramètres gérés2281 Entrées d'identifiants invalides dans les paramètres gérés


2293 `sandbox.credentials.files`2293 `sandbox.credentials.files`

2294</h3>2294</h3>

2295 2295 

2296Protégez les fichiers ou répertoires d'identifiants des commandes en sandbox. Avec `"mode": "deny"`, Claude Code bloque les lectures du chemin à l'intérieur du sandbox, le même bloc de lecture que [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Avec `"mode": "mask"`, les commandes en sandbox sur Linux et WSL2 lisent une copie sentinelle du fichier, et le proxy du sandbox substitue la valeur réelle sur les demandes sortantes à `injectHosts` de cette entrée ; sur macOS le fichier est illisible à l'intérieur du sandbox à la place. Nécessite Claude Code v2.1.187 ou ultérieur, et `"mode": "mask"` nécessite v2.1.221 ou ultérieur.2296Protégez les fichiers ou répertoires d'identifiants des commandes en sandbox. Avec `"mode": "deny"`, Claude Code bloque les lectures du chemin à l'intérieur du sandbox, le même bloc de lecture que [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Avec `"mode": "mask"`, les commandes en sandbox sur Linux et WSL2 lisent une copie sentinelle du fichier, et le proxy du sandbox substitue la valeur réelle sur les demandes sortantes à `injectHosts` de cette entrée ; sur macOS le fichier est illisible à l'intérieur du sandbox à la place. `"mode": "mask"` nécessite Claude Code v2.1.221 ou ultérieur.

2297 2297 

2298* **Scope** : [`Any file`](#scopes). Claude Code abandonne les entrées `mask` de `.claude/settings.json` du projet et de `.claude/settings.local.json` local.2298* **Scope** : [`Any file`](#scopes). Claude Code abandonne les entrées `mask` de `.claude/settings.json` du projet et de `.claude/settings.local.json` local.

2299* **Type** : tableau d'objets, chacun avec `path` et un `mode` de `"deny"` ou `"mask"`, plus les [champs mask optionnels pour les fichiers](#mask-fields-for-files)2299* **Type** : tableau d'objets, chacun avec `path` et un `mode` de `"deny"` ou `"mask"`, plus les [champs mask optionnels pour les fichiers](#mask-fields-for-files)


2314}2314}

2315```2315```

2316 2316 

2317Les chemins utilisent les mêmes [préfixes](#sandbox-path-prefixes) que les paramètres `sandbox.filesystem.*`, et Claude Code fusionne les tableaux de chaque portée de paramètres que la session charge. [Protect credentials](/docs/fr/sandboxing#protect-credentials) couvre ce qui s'applique toujours à partir des sources que vous excluez avec `--setting-sources`. Nécessite Claude Code v2.1.187 ou ultérieur ; les entrées `mask` nécessitent v2.1.221 ou ultérieur.2317Les chemins utilisent les mêmes [préfixes](#sandbox-path-prefixes) que les paramètres `sandbox.filesystem.*`, et Claude Code fusionne les tableaux de chaque portée de paramètres que la session charge. [Protect credentials](/docs/fr/sandboxing#protect-credentials) couvre ce qui s'applique toujours à partir des sources que vous excluez avec `--setting-sources`. `mask` entrées nécessitent Claude Code v2.1.221 ou ultérieur.

2318 2318 

2319La substitution `mask` s'exécute uniquement via le proxy du sandbox, donc définissez [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), ou [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) pour les réseaux de test HTTP simple. `mask` s'applique à un seul fichier, donc listez chaque fichier d'identifiants individuellement. Claude Code accepte mais ignore les champs `mask` sur une entrée `deny`. [Mask credential files](/docs/fr/sandboxing#mask-credential-files) couvre quelles sources de paramètres sont honorées et quand une entrée revient à `deny`.2319La substitution `mask` s'exécute uniquement via le proxy du sandbox, donc définissez [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), ou [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) pour les réseaux de test HTTP simple. `mask` s'applique à un seul fichier, donc listez chaque fichier d'identifiants individuellement. Claude Code accepte mais ignore les champs `mask` sur une entrée `deny`. [Mask credential files](/docs/fr/sandboxing#mask-credential-files) couvre quelles sources de paramètres sont honorées et quand une entrée revient à `deny`.

2320 2320 


2370 `sandbox.credentials.envVars`2370 `sandbox.credentials.envVars`

2371</h3>2371</h3>

2372 2372 

2373Protégez les variables d'environnement des commandes en sandbox. Avec `"mode": "deny"`, Claude Code supprime la variable de l'environnement des commandes en sandbox. Avec `"mode": "mask"`, les commandes en sandbox voient une valeur sentinelle par session, et le proxy du sandbox substitue la valeur réelle sur les demandes sortantes à `injectHosts` de cette entrée, afin que les outils tels que `gh` et `npm` continuent de s'authentifier sans jamais tenir l'identifiant réel. Nécessite Claude Code v2.1.187 ou ultérieur, et `"mode": "mask"` nécessite v2.1.199 ou ultérieur.2373Protégez les variables d'environnement des commandes en sandbox. Avec `"mode": "deny"`, Claude Code supprime la variable de l'environnement des commandes en sandbox. Avec `"mode": "mask"`, les commandes en sandbox voient une valeur sentinelle par session, et le proxy du sandbox substitue la valeur réelle sur les demandes sortantes à `injectHosts` de cette entrée, afin que les outils tels que `gh` et `npm` continuent de s'authentifier sans jamais tenir l'identifiant réel. `"mode": "mask"` nécessite Claude Code v2.1.199 ou ultérieur.

2374 2374 

2375* **Scope** : [`Any file`](#scopes). Claude Code abandonne les entrées `mask` de `.claude/settings.json` du projet et de `.claude/settings.local.json` local.2375* **Scope** : [`Any file`](#scopes). Claude Code abandonne les entrées `mask` de `.claude/settings.json` du projet et de `.claude/settings.local.json` local.

2376* **Type** : tableau d'objets, chacun avec `name` et un `mode` de `"deny"` ou `"mask"`, plus les [champs mask optionnels pour les variables d'environnement](#mask-fields-for-environment-variables)2376* **Type** : tableau d'objets, chacun avec `name` et un `mode` de `"deny"` ou `"mask"`, plus les [champs mask optionnels pour les variables d'environnement](#mask-fields-for-environment-variables)


2391}2391}

2392```2392```

2393 2393 

2394Le `name` doit commencer par une lettre ou un trait de soulignement et contenir uniquement des lettres, des chiffres et des traits de soulignement. Claude Code fusionne les tableaux de chaque portée de paramètres que la session charge, et applique `deny` lorsque la même variable apparaît avec les deux modes. [Protect credentials](/docs/fr/sandboxing#protect-credentials) couvre ce qui s'applique toujours à partir des sources que vous excluez avec `--setting-sources`. Nécessite Claude Code v2.1.187 ou ultérieur ; les entrées `mask` nécessitent v2.1.199 ou ultérieur.2394Le `name` doit commencer par une lettre ou un trait de soulignement et contenir uniquement des lettres, des chiffres et des traits de soulignement. Claude Code fusionne les tableaux de chaque portée de paramètres que la session charge, et applique `deny` lorsque la même variable apparaît avec les deux modes. [Protect credentials](/docs/fr/sandboxing#protect-credentials) couvre ce qui s'applique toujours à partir des sources que vous excluez avec `--setting-sources`. `mask` entrées nécessitent Claude Code v2.1.199 ou ultérieur.

2395 2395 

2396La substitution `mask` s'exécute uniquement via le proxy du sandbox, donc définissez [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), ou [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) pour les réseaux de test HTTP simple ; consultez [Mask environment variables](/docs/fr/sandboxing#mask-environment-variables). Claude Code accepte mais ignore les champs `mask` sur une entrée `deny`.2396La substitution `mask` s'exécute uniquement via le proxy du sandbox, donc définissez [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), ou [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) pour les réseaux de test HTTP simple ; consultez [Mask environment variables](/docs/fr/sandboxing#mask-environment-variables). Claude Code accepte mais ignore les champs `mask` sur une entrée `deny`.

2397 2397 


2954 `env`2954 `env`

2955</h3>2955</h3>

2956 2956 

2957Définissez les variables d'environnement pour chaque session et pour les sous-processus que Claude Code démarre à partir de celle-ci. Toute variable dans la [référence des variables d'environnement](/docs/fr/env-vars) peut aller ici, ce qui est comment vous l'appliquez à chaque session ou la déployez à votre équipe.2957Définissez les variables d'environnement pour chaque session et pour les sous-processus que Claude Code démarre à partir de celle-ci. Toute variable dans la [référence des variables d'environnement](/docs/fr/env-vars) peut aller ici, ce qui est comment vous l'appliquez à chaque session ou la déployez à votre équipe. Les paramètres de projet et locaux ne peuvent pas définir [certaines d'entre elles](#variables-claude-code-ignores-in-env).

2958 2958 

2959* **Scope** : [`Any file`](#scopes)2959* **Scope** : [`Any file`](#scopes)

2960* **Type** : object mapping variable names to string values2960* **Type** : object mapping variable names to string values


2975 Comment les valeurs `env` interagissent avec votre shell2975 Comment les valeurs `env` interagissent avec votre shell

2976</h4>2976</h4>

2977 2977 

2978* Une valeur ici écrase la même variable exportée dans votre shell, et lorsque plus d'un fichier de paramètres définit une variable, celle avec la [plus haute priorité](/docs/fr/settings#settings-precedence) s'applique.2978* Une valeur ici écrase la même variable exportée dans votre shell, et lorsque plus d'un fichier de paramètres définit une variable, celle avec la [plus haute priorité](/docs/fr/settings#settings-precedence) s'applique. [Variables que Claude Code ignore dans `env`](#variables-claude-code-ignores-in-env) répertorie les exceptions pour les paramètres de projet et locaux.

2979* Pour annuler une exportation de shell, définissez la variable sur `""`. Claude Code traite une valeur vide comme non définie pour la sélection du fournisseur, et les sous-processus héritent de la valeur vide.2979* Pour annuler une exportation de shell, définissez la variable sur `""`. Claude Code traite une valeur vide comme non définie pour la sélection du fournisseur, et les sous-processus héritent de la valeur vide.

2980* `NO_COLOR` et `FORCE_COLOR` définis ici ne parviennent qu'aux sous-processus. Pour modifier les couleurs de l'interface de Claude Code lui-même, définissez-les dans votre shell avant de lancer `claude`.2980* `NO_COLOR` et `FORCE_COLOR` définis ici ne parviennent qu'aux sous-processus. Pour modifier les couleurs de l'interface de Claude Code lui-même, définissez-les dans votre shell avant de lancer `claude`.

2981* Les valeurs ici sont du texte brut dans le fichier de paramètres et parviennent à chaque sous-processus que Claude Code démarre. Pour un jeton porteur OTLP qui tourne, utilisez [`otelHeadersHelper`](#otelheadershelper) ; pour les identifiants d'API, utilisez [`apiKeyHelper`](#apikeyhelper).2981* Les valeurs ici sont du texte brut dans le fichier de paramètres et parviennent à chaque sous-processus que Claude Code démarre. Pour un jeton porteur OTLP qui tourne, utilisez [`otelHeadersHelper`](#otelheadershelper) ; pour les identifiants d'API, utilisez [`apiKeyHelper`](#apikeyhelper).


2986 2986 

2987* À partir des paramètres utilisateur, `--settings` et des paramètres gérés : au démarrage, et à nouveau dans la session en cours lorsqu'une modification enregistrée modifie le `env` fusionné.2987* À partir des paramètres utilisateur, `--settings` et des paramètres gérés : au démarrage, et à nouveau dans la session en cours lorsqu'une modification enregistrée modifie le `env` fusionné.

2988* À partir des paramètres de projet et locaux : après avoir approuvé l'espace de travail, ou au démarrage en mode `-p`, qui n'affiche jamais la boîte de dialogue de confiance, et à nouveau lorsqu'une modification enregistrée modifie le `env` fusionné.2988* À partir des paramètres de projet et locaux : après avoir approuvé l'espace de travail, ou au démarrage en mode `-p`, qui n'affiche jamais la boîte de dialogue de confiance, et à nouveau lorsqu'une modification enregistrée modifie le `env` fusionné.

2989* Les variables que Claude Code classe comme sûres, telles que la sélection du modèle, les délais d'attente et les limites, les basculements de fonctionnalités et les paramètres de télémétrie : au démarrage à partir de chaque fichier de paramètres, à l'exception des [variables que les paramètres de projet et locaux ne peuvent pas définir](#variables-claude-code-ignores-in-env).2989* Les variables que Claude Code classe comme sûres, telles que la sélection du modèle, les délais d'attente et les limites, et les basculements de fonctionnalités : au démarrage à partir de chaque fichier de paramètres, à l'exception des [variables que les paramètres de projet et locaux ne peuvent pas définir](#variables-claude-code-ignores-in-env).

2990* Après avoir [déplacé la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur : les valeurs `env` du nouveau répertoire du projet et locales, en plus de celles du répertoire précédent.2990* Après avoir [déplacé la session avec `/cd`](/docs/fr/permissions#move-the-session-to-another-directory) sur v2.1.246 ou ultérieur : les valeurs `env` du nouveau répertoire du projet et locales, en plus de celles du répertoire précédent.

2991 2991 

2992<h4 id="variables-claude-code-ignores-in-env">2992<h4 id="variables-claude-code-ignores-in-env">

2993 Variables que Claude Code ignore dans `env`2993 Variables que Claude Code ignore dans `env`

2994</h4>2994</h4>

2995 2995 

2996* Les paramètres de projet et locaux ne peuvent pas définir les variables qu'un référentiel extrait ne devrait pas contrôler ; définissez-les plutôt dans votre shell, vos paramètres utilisateur ou vos paramètres gérés. Claude Code supprime chacun et enregistre un avertissement que vous pouvez voir avec `claude --debug`. Ils incluent :2996* Les paramètres de projet et locaux ne peuvent pas définir les variables qu'un référentiel extrait ne devrait pas contrôler ; définissez-les plutôt dans votre shell, vos paramètres utilisateur ou vos paramètres gérés. Claude Code supprime chacun, à l'exception de quelques valeurs qui désactivent la télémétrie, et enregistre un avertissement que vous pouvez voir avec `claude --debug`. Ils incluent :

2997 2997 

2998 * Les variables qui choisissent où Claude Code stocke ou écrit ses propres fichiers : `CLAUDE_CONFIG_DIR`, `CLAUDE_CODE_TMPDIR` et les variables de répertoire du système d'exploitation telles que `HOME`, `TMPDIR`, `TMP`, `TEMP` et la famille `XDG_*`.2998 * Les variables qui choisissent où Claude Code stocke ou écrit ses propres fichiers : `CLAUDE_CONFIG_DIR`, `CLAUDE_CODE_TMPDIR` et les variables de répertoire du système d'exploitation telles que `HOME`, `TMPDIR`, `TMP`, `TEMP` et la famille `XDG_*`.

2999 * Les variables qui exportent le contenu de la session : [`OTEL_LOG_RAW_API_BODIES`](/docs/fr/env-vars#variables) et la paire de traçage bêta détaillée `ENABLE_BETA_TRACING_DETAILED` et `BETA_TRACING_ENDPOINT`.2999 * Les variables qui exportent le contenu de la session : [`OTEL_LOG_RAW_API_BODIES`](/docs/fr/env-vars#variables) et la paire de traçage bêta détaillée `ENABLE_BETA_TRACING_DETAILED` et `BETA_TRACING_ENDPOINT`.

3000 * Les variables [OpenTelemetry exporter](/docs/fr/monitoring-usage) qui activent la télémétrie, choisissent où elle va ou choisissent quel contenu elle capture :

3001 

3002 * `CLAUDE_CODE_ENABLE_TELEMETRY`, plus la paire de télémétrie améliorée bêta `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` et `ENABLE_ENHANCED_TELEMETRY_BETA`

3003 * Les sélecteurs d'exportateur `OTEL_LOGS_EXPORTER`, `OTEL_METRICS_EXPORTER` et `OTEL_TRACES_EXPORTER`

3004 * Les variables de contenu `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_ASSISTANT_RESPONSES`, `OTEL_LOG_TOOL_CONTENT` et `OTEL_LOG_TOOL_DETAILS`

3005 * Les variables `OTEL_EXPORTER_OTLP_*` dont les noms se terminent par `_ENDPOINT`, `_HEADERS`, `_PROTOCOL`, `_CERTIFICATE`, `_CLIENT_KEY` ou `_INSECURE`, dans les formes génériques et par signal, telles que `OTEL_EXPORTER_OTLP_ENDPOINT` et `OTEL_EXPORTER_OTLP_METRICS_HEADERS`

3006 * `OTEL_EXPORTER_PROMETHEUS_HOST` et `OTEL_EXPORTER_PROMETHEUS_PORT`

3007 

3008 Seules ces valeurs s'appliquent toujours à partir des paramètres de projet et locaux, car elles désactivent quelque chose : `none` pour les trois sélecteurs d'exportateur, et une valeur désactivée telle que `0` pour `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_CONTENT` et `OTEL_LOG_TOOL_DETAILS`. Une telle valeur remplace la même variable dans vos paramètres utilisateur, mais pas celle que l'environnement à partir duquel vous lancez Claude Code, un fichier `--settings` ou les paramètres gérés définissent.

3009 

3010 Lorsqu'un fichier de paramètres de projet ou locaux définit une variable dans ce groupe, une session interactive locale affiche un avis au démarrage. Exécutez `/status` ou `claude doctor` pour voir lesquels Claude Code a ignorés et lesquels ont désactivé la télémétrie ; les deux répertorient les noms, jamais les valeurs. Une exécution non interactive avec `-p` ou une session Agent SDK n'affiche aucun avis, donc vérifiez que votre collecteur reçoit toujours des données après la mise à niveau. S'il ne le fait pas, définissez les variables dans vos paramètres utilisateur, paramètres gérés, l'environnement du travail ou un fichier que vous transmettez avec `--settings`.

3011 

3012 Ignorer ce groupe dans les paramètres de projet et locaux nécessite Claude Code v2.1.282 ou ultérieur.

3000 * Les variables qui changent la façon dont Claude Code démarre ou se synchronise, telles que `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR` et `CLAUDE_CODE_PLUGIN_SEED_DIR`.3013 * Les variables qui changent la façon dont Claude Code démarre ou se synchronise, telles que `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR` et `CLAUDE_CODE_PLUGIN_SEED_DIR`.

3001 3014 

3002 Avant v2.1.251, les paramètres de projet et locaux pouvaient définir chaque variable que cette liste nomme sauf `HOME`, `XDG_CONFIG_HOME` et les variables qui changent la façon dont Claude Code démarre ou se synchronise.3015 Avant v2.1.251, les paramètres de projet et locaux pouvaient également définir les variables de cette liste qui choisissent où Claude Code écrit ses fichiers ou qui exportent le contenu de la session, sauf `HOME` et `XDG_CONFIG_HOME`.

3003* Les variables d'identité que les environnements d'hébergement de Claude Code possèdent, telles que `CLAUDE_CODE_REMOTE` et `CLAUDE_CODE_ACCOUNT_UUID`, sont ignorées de chaque fichier.3016* Les variables d'identité que les environnements d'hébergement de Claude Code possèdent, telles que `CLAUDE_CODE_REMOTE` et `CLAUDE_CODE_ACCOUNT_UUID`, sont ignorées de chaque fichier.

3004* [`CLAUDE_CODE_MESSAGING_SOCKET` et `CLAUDE_CODE_MESSAGING_TOKEN`](/docs/fr/env-vars#variables), que Claude Code exporte lui-même, sont ignorées de chaque fichier. Ignorer la variable de socket nécessite Claude Code v2.1.224 ou ultérieur, et ignorer le jeton nécessite v2.1.228 ou ultérieur.3017* [`CLAUDE_CODE_MESSAGING_SOCKET` et `CLAUDE_CODE_MESSAGING_TOKEN`](/docs/fr/env-vars#variables), que Claude Code exporte lui-même, sont ignorées de chaque fichier. Ignorer la variable de socket nécessite Claude Code v2.1.224 ou ultérieur, et ignorer le jeton nécessite v2.1.228 ou ultérieur.

3005* [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/fr/sessions#name-the-project-directory-yourself), que Claude Code lit uniquement à partir de l'environnement de lancement, est ignorée de chaque fichier ; nécessite v2.1.234 ou ultérieur.3018* [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/fr/sessions#name-the-project-directory-yourself), que Claude Code lit uniquement à partir de l'environnement de lancement, est ignorée de chaque fichier ; nécessite v2.1.234 ou ultérieur.


3464 `respondToBashCommands`3477 `respondToBashCommands`

3465</h3>3478</h3>

3466 3479 

3467Choisissez si Claude répond après que vous exécutiez une commande shell avec le préfixe [`!`](/docs/fr/interactive-mode#shell-mode-with-prefix) dans la boîte d'entrée. Par défaut, Claude Code ajoute la sortie de la commande à la conversation et Claude y répond. Définissez cette clé à `false` pour ajouter la sortie au contexte sans réponse, afin que vous puissiez exécuter plusieurs commandes et les interroger ensemble. Nécessite Claude Code v2.1.186 ou ultérieur.3480Choisissez si Claude répond après que vous exécutiez une commande shell avec le préfixe [`!`](/docs/fr/interactive-mode#shell-mode-with-prefix) dans la boîte d'entrée. Par défaut, Claude Code ajoute la sortie de la commande à la conversation et Claude y répond. Définissez cette clé à `false` pour ajouter la sortie au contexte sans réponse, afin que vous puissiez exécuter plusieurs commandes et les interroger ensemble.

3468 3481 

3469* **Portée** : [`N'importe quel fichier`](#scopes)3482* **Portée** : [`N'importe quel fichier`](#scopes)

3470* **Type** : Booléen3483* **Type** : Booléen


3478}3491}

3479```3492```

3480 3493 

3481Voir [Mode shell avec préfixe `!`](/docs/fr/interactive-mode#shell-mode-with-prefix). Nécessite Claude Code v2.1.186 ou ultérieur.3494Voir [Mode shell avec préfixe `!`](/docs/fr/interactive-mode#shell-mode-with-prefix).

3482 3495 

3483<h3 id="showclearcontextonplanaccept">3496<h3 id="showclearcontextonplanaccept">

3484 `showClearContextOnPlanAccept`3497 `showClearContextOnPlanAccept`


3985Personnalisez l'attribution que Claude Code ajoute aux commits git et aux pull requests. Les commits reçoivent une [git trailer](https://git-scm.com/docs/git-interpret-trailers) telle que `Co-Authored-By` par défaut ; les descriptions de pull request reçoivent du texte brut. Définissez chaque partie séparément avec les sous-clés ci-dessous.3998Personnalisez l'attribution que Claude Code ajoute aux commits git et aux pull requests. Les commits reçoivent une [git trailer](https://git-scm.com/docs/git-interpret-trailers) telle que `Co-Authored-By` par défaut ; les descriptions de pull request reçoivent du texte brut. Définissez chaque partie séparément avec les sous-clés ci-dessous.

3986 3999 

3987* **Portée** : [`Any file`](#scopes)4000* **Portée** : [`Any file`](#scopes)

3988* **Type** : objet avec les chaînes `commit` et `pr` et un booléen `sessionUrl`4001* **Type** : objet avec les chaînes `commit` et `pr` et un booléen `sessionUrl`, ou `false` pour masquer toute attribution. La valeur `false` nécessite Claude Code v2.1.281 ou ultérieur ; les versions antérieures la rejettent et [ignorent l'intégralité du fichier de paramètres utilisateur, projet ou local](/docs/fr/settings#fix-a-broken-settings-file) qui la contient

3989* **Défaut** : non défini, donc Claude Code utilise l'attribution standard affichée sous chaque sous-clé4002* **Défaut** : non défini, donc Claude Code utilise l'attribution standard affichée sous chaque sous-clé

3990 4003 

4004Pour masquer toute attribution, définissez `attribution` sur `false`. Dans un fichier de paramètres que les versions antérieures lisent également, définissez [`commit`](#attribution-commit) et [`pr`](#attribution-pr) sur des chaînes vides et [`sessionUrl`](#attribution-sessionurl) sur `false` à la place.

4005 

3991Cet exemple remplace l'attribution du commit, supprime l'attribution de la pull request et supprime le lien de session :4006Cet exemple remplace l'attribution du commit, supprime l'attribution de la pull request et supprime le lien de session :

3992 4007 

3993```json settings.json theme={null}4008```json settings.json theme={null}


4000}4015}

4001```4016```

4002 4017 

4003Pour masquer toute attribution, définissez [`commit`](#attribution-commit) et [`pr`](#attribution-pr) sur des chaînes vides et [`sessionUrl`](#attribution-sessionurl) sur `false`. Une fois que vous définissez `commit` ou `pr`, Claude Code ignore le paramètre `includeCoAuthoredBy` déprécié et utilise son texte par défaut pour celui des deux que vous avez laissé non défini.4018Une fois que vous définissez `commit` ou `pr`, Claude Code ignore le paramètre `includeCoAuthoredBy` déprécié et utilise son texte par défaut pour celui des deux que vous avez laissé non défini.

4004 4019 

4005Claude Code indique à Claude que vos propres instructions concernant l'attribution, telles qu'une règle CLAUDE.md ou [memory](/docs/fr/memory), ont la priorité sur ces lignes de commit et de PR, sauf si la ligne est définie dans les [paramètres gérés](/docs/fr/managed-settings).4020Claude Code indique à Claude que vos propres instructions concernant l'attribution, telles qu'une règle CLAUDE.md ou [memory](/docs/fr/memory), ont la priorité sur ces lignes de commit et de PR, sauf si la ligne est définie dans les [paramètres gérés](/docs/fr/managed-settings).

4006 4021 


4026}4041}

4027```4042```

4028 4043 

4029Pour masquer toute attribution aujourd'hui, définissez [`attribution.commit`](#attribution-commit) et [`attribution.pr`](#attribution-pr) sur des chaînes vides et [`attribution.sessionUrl`](#attribution-sessionurl) sur `false`.4044Pour masquer toute attribution, voir [`attribution`](#attribution).

4030 4045 

4031<h3 id="includegitinstructions">4046<h3 id="includegitinstructions">

4032 `includeGitInstructions`4047 `includeGitInstructions`


4184* **Les hooks gérés et SDK s'exécutent** : les hooks des paramètres gérés et les hooks que l'[Agent SDK](/docs/fr/agent-sdk/overview) enregistre en processus4199* **Les hooks gérés et SDK s'exécutent** : les hooks des paramètres gérés et les hooks que l'[Agent SDK](/docs/fr/agent-sdk/overview) enregistre en processus

4185* **Les hooks des plugins force-enabled s'exécutent** : les hooks des plugins que vos paramètres gérés force-enable via [`enabledPlugins`](#enabledplugins). Claude Code correspond sur l'ID complet `plugin@marketplace`, donc un plugin portant le même nom d'une marketplace différente reste bloqué. Cela vous permet de distribuer des hooks vérifiés via une marketplace d'organisation tout en bloquant tout le reste4200* **Les hooks des plugins force-enabled s'exécutent** : les hooks des plugins que vos paramètres gérés force-enable via [`enabledPlugins`](#enabledplugins). Claude Code correspond sur l'ID complet `plugin@marketplace`, donc un plugin portant le même nom d'une marketplace différente reste bloqué. Cela vous permet de distribuer des hooks vérifiés via une marketplace d'organisation tout en bloquant tout le reste

4186* **Tout le reste est bloqué** : les hooks utilisateur, projet et local, les hooks d'autres plugins, et les hooks déclarés dans le frontmatter de l'agent4201* **Tout le reste est bloqué** : les hooks utilisateur, projet et local, les hooks d'autres plugins, et les hooks déclarés dans le frontmatter de l'agent

4187* **Les plugins sourced par commande sont désactivés** : Claude Code désactive également les plugins avec une [`command` source](/docs/fr/plugin-marketplaces#command-sources), y compris les plugins force-enabled dans les `enabledPlugins` gérés, sauf si vous définissez [`disableCommandPluginSources`](#disablecommandpluginsources) explicitement à `false`4202* **Les plugins sourced par commande sont désactivés** : Claude Code désactive également les plugins avec une [`command` source](/docs/fr/plugins/marketplace-reference#command-plugin-source), y compris les plugins force-enabled dans les `enabledPlugins` gérés, sauf si vous définissez [`disableCommandPluginSources`](#disablecommandpluginsources) explicitement à `false`

4188* **Les commandes `headersHelper` de la marketplace sont bloquées** : Claude Code bloque également les commandes [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) de la marketplace sauf si [`disableCommandPluginSources`](#disablecommandpluginsources) est explicitement défini à `false`, sauf pour une marketplace que les paramètres gérés eux-mêmes déclarent. Nécessite Claude Code v2.1.238 ou ultérieur4203* **Les commandes `headersHelper` de la marketplace sont bloquées** : Claude Code bloque également les commandes [`headersHelper`](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) de la marketplace sauf si [`disableCommandPluginSources`](#disablecommandpluginsources) est explicitement défini à `false`, sauf pour une marketplace que les paramètres gérés eux-mêmes déclarent. Nécessite Claude Code v2.1.238 ou ultérieur

4189* **La ligne d'état et la suggestion de fichier se limitent aux paramètres gérés** : Claude Code lit [`statusLine`](/docs/fr/statusline), [`fileSuggestion`](#filesuggestion) et [`subagentStatusLine`](/docs/fr/statusline#subagent-status-lines) uniquement à partir des paramètres gérés, en suivant les [portes de ligne d'état et de suggestion de fichier](#status-line-and-file-suggestion-gates)4204* **La ligne d'état et la suggestion de fichier se limitent aux paramètres gérés** : Claude Code lit [`statusLine`](/docs/fr/statusline), [`fileSuggestion`](#filesuggestion) et [`subagentStatusLine`](/docs/fr/statusline#subagent-status-lines) uniquement à partir des paramètres gérés, en suivant les [portes de ligne d'état et de suggestion de fichier](#status-line-and-file-suggestion-gates)

4190 4205 

4191La commande [`/goal`](/docs/fr/goal) ne peut pas s'exécuter tant que cette clé est définie, car elle dépend des hooks.4206La commande [`/goal`](/docs/fr/goal) ne peut pas s'exécuter tant que cette clé est définie, car elle dépend des hooks.


4369 Plugins et skills4384 Plugins et skills

4370</h2>4385</h2>

4371 4386 

4372Activez les plugins, enregistrez les marketplaces, limitez les sources de plugins que votre organisation autorise, et contrôlez les skills qui se chargent. Pour installer et créer des plugins, consultez [Plugins](/docs/fr/plugins).4387Activez les plugins, enregistrez les marketplaces, limitez les sources de plugins que votre organisation autorise, et contrôlez les skills qui se chargent. Pour installer et créer des plugins, consultez [Plugins](/docs/fr/plugins/overview).

4373 4388 

4374<h3 id="disablebundledskills">4389<h3 id="disablebundledskills">

4375 `disableBundledSkills`4390 `disableBundledSkills`


4465 `syncClaudeAiPlugins`4480 `syncClaudeAiPlugins`

4466</h3>4481</h3>

4467 4482 

4468Désactivez le téléchargement des [plugins activés pour votre compte claude.ai](/docs/fr/plugins-reference#synced-plugins). Claude Code les télécharge dans `~/.claude/plugins/synced/` au début des sessions de terminal où vous vous connectez avec votre compte claude.ai, et dans les sessions Cowork et cloud, et charge chacun comme `<name>@synced`. Définissez `false` pour arrêter ce téléchargement et arrêter le chargement des plugins qu'il a déjà synchronisés. Claude Code honore uniquement `false` : `true` est identique à unset et n'active pas la synchronisation où elle est autrement désactivée. Nécessite Claude Code v2.1.273 ou ultérieur.4483Désactivez le téléchargement des [plugins activés pour votre compte claude.ai](/docs/fr/plugins/loading#synced-plugins). Claude Code les télécharge dans `~/.claude/plugins/synced/` au début des sessions de terminal où vous vous connectez avec votre compte claude.ai et dans les sessions Cowork, et charge chacun comme `<name>@synced`. Définissez `false` pour arrêter ce téléchargement et arrêter le chargement des plugins qu'il a déjà synchronisés. Claude Code honore uniquement `false` : `true` est identique à unset et n'active pas la synchronisation où elle est autrement désactivée. Nécessite Claude Code v2.1.273 ou ultérieur.

4469 4484 

4470* **Scope** : [`User, local, or managed`](#scopes), et fichiers passés avec `--settings`. Un référentiel ne peut pas le désactiver pour vous.4485* **Scope** : [`User, local, or managed`](#scopes), et fichiers passés avec `--settings`. Un référentiel ne peut pas le désactiver pour vous.

4471* **Type** : Boolean4486* **Type** : Boolean


4514 4529 

4515Bloquez les sources de marketplace de plugins pour votre organisation. Claude Code vérifie la liste de blocage lors de l'ajout de marketplace et lors de l'installation, la mise à jour, l'actualisation et la mise à jour automatique du plugin, donc une marketplace que quelqu'un a ajoutée avant que vous ne définissiez la politique ne peut pas être utilisée pour récupérer des plugins non plus. Les sources bloquées sont vérifiées avant le téléchargement, donc elles ne touchent jamais le système de fichiers.4530Bloquez les sources de marketplace de plugins pour votre organisation. Claude Code vérifie la liste de blocage lors de l'ajout de marketplace et lors de l'installation, la mise à jour, l'actualisation et la mise à jour automatique du plugin, donc une marketplace que quelqu'un a ajoutée avant que vous ne définissiez la politique ne peut pas être utilisée pour récupérer des plugins non plus. Les sources bloquées sont vérifiées avant le téléchargement, donc elles ne touchent jamais le système de fichiers.

4516 4531 

4517Si vous définissez cette clé dans la [console d'administration claude.ai](/docs/fr/server-managed-settings), claude.ai l'applique également lorsque quelqu'un de votre organisation ajoute une marketplace à partir d'un référentiel git sur claude.ai, comme [Comment les restrictions fonctionnent](/docs/fr/plugin-marketplaces#how-restrictions-work) le décrit.4532Si vous définissez cette clé dans la [console d'administration claude.ai](/docs/fr/server-managed-settings), claude.ai l'applique également lorsque quelqu'un de votre organisation ajoute une marketplace à partir d'un référentiel git sur claude.ai, comme [Comment les restrictions fonctionnent](/docs/fr/plugins/org#restrict-what-users-can-install) le décrit.

4518 4533 

4519* **Scope** : [`Managed`](#scopes)4534* **Scope** : [`Managed`](#scopes)

4520* **Type** : tableau d'objets source de marketplace, dans les mêmes formes que [`strictKnownMarketplaces`](#allowed-source-types)4535* **Type** : tableau d'objets source de marketplace, dans les mêmes formes que [`strictKnownMarketplaces`](#allowed-source-types)


4530}4545}

4531```4546```

4532 4547 

4533Une entrée `github` peut utiliser la forme [owner-wildcard](#owner-wildcards) `"owner/*"` pour bloquer tous les référentiels sous ce propriétaire GitHub, ce qui nécessite Claude Code v2.1.223 ou ultérieur. Ajoutez `{ "source": "skills-dir" }` pour arrêter le chargement des [plugins `@skills-dir`](/docs/fr/plugins-reference#skills-directory-plugins) par Claude Code depuis `~/.claude/skills/` sans restreindre aucune marketplace. Consultez [Restrictions de marketplace gérées](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions).4548Une entrée `github` peut utiliser la forme [owner-wildcard](#owner-wildcards) `"owner/*"` pour bloquer tous les référentiels sous ce propriétaire GitHub, ce qui nécessite Claude Code v2.1.223 ou ultérieur. Ajoutez `{ "source": "skills-dir" }` pour arrêter le chargement des [plugins `@skills-dir`](/docs/fr/plugins/loading#plugins-shared-through-a-repository) par Claude Code depuis `~/.claude/skills/` sans restreindre aucune marketplace. Consultez [Restrictions de marketplace gérées](/docs/fr/plugins/org#restrict-what-users-can-install).

4534 4549 

4535<h3 id="channelsenabled">4550<h3 id="channelsenabled">

4536 `channelsEnabled`4551 `channelsEnabled`


4556 `disableCommandPluginSources`4571 `disableCommandPluginSources`

4557</h3>4572</h3>

4558 4573 

4559Bloquez la [source de plugin `command`](/docs/fr/plugin-marketplaces#command-sources), qui installe un plugin en exécutant une commande déclarée par la marketplace sur la machine de l'utilisateur. Lorsque vous le définissez à `true`, Claude Code n'exécute jamais la commande, n'installe ou ne met à jour les plugins provenant de sources de commande, et arrête de charger ceux déjà installés. Définissez-le à `false` pour les autoriser explicitement. Chaque fois qu'il bloque les sources de commande, que vous le définissiez à `true` ou que vous le laissiez unset sous [`allowManagedHooksOnly`](#allowmanagedhooksonly), il bloque également les commandes [`headersHelper`](/docs/fr/plugin-marketplaces#authenticate-archive-downloads) de la marketplace, sauf pour une marketplace que les paramètres gérés eux-mêmes déclarent. Nécessite Claude Code v2.1.229 ou ultérieur, et le blocage `headersHelper` nécessite v2.1.238 ou ultérieur.4574Bloquez la [source de plugin `command`](/docs/fr/plugins/marketplace-reference#command-plugin-source), qui installe un plugin en exécutant une commande déclarée par la marketplace sur la machine de l'utilisateur. Lorsque vous le définissez à `true`, Claude Code n'exécute jamais la commande, n'installe ou ne met à jour les plugins provenant de sources de commande, et arrête de charger ceux déjà installés. Définissez-le à `false` pour les autoriser explicitement. Chaque fois qu'il bloque les sources de commande, que vous le définissiez à `true` ou que vous le laissiez unset sous [`allowManagedHooksOnly`](#allowmanagedhooksonly), il bloque également les commandes [`headersHelper`](/docs/fr/plugins/host-marketplace#authenticate-archive-downloads) de la marketplace, sauf pour une marketplace que les paramètres gérés eux-mêmes déclarent. Nécessite Claude Code v2.1.229 ou ultérieur, et le blocage `headersHelper` nécessite v2.1.238 ou ultérieur.

4560 4575 

4561* **Scope** : [`Managed`](#scopes)4576* **Scope** : [`Managed`](#scopes)

4562* **Type** : Boolean4577* **Type** : Boolean


4588}4603}

4589```4604```

4590 4605 

4591Un nom prend effet uniquement lorsque la marketplace est enregistrée sur la machine et que sa source enregistrée est également déclarée dans les mêmes paramètres gérés, soit comme l'entrée [`extraKnownMarketplaces`](#extraknownmarketplaces) pour ce nom, soit comme une entrée de [`strictKnownMarketplaces`](#strictknownmarketplaces). Claude Code ignore une marketplace enregistrée à partir d'une source différente sous un nom autorisé. La marketplace officielle est exempte de l'exigence de source : autoriser son nom seul suffit, puisque ce nom ne peut s'enregistrer que depuis la source Anthropic officielle. Consultez [Suggérer des plugins par contexte](/docs/fr/plugin-relevance).4606Un nom prend effet uniquement lorsque la marketplace est enregistrée sur la machine et que sa source enregistrée est également déclarée dans les mêmes paramètres gérés, soit comme l'entrée [`extraKnownMarketplaces`](#extraknownmarketplaces) pour ce nom, soit comme une entrée de [`strictKnownMarketplaces`](#strictknownmarketplaces). Claude Code ignore une marketplace enregistrée à partir d'une source différente sous un nom autorisé. La marketplace officielle est exempte de l'exigence de source : autoriser son nom seul suffit, puisque ce nom ne peut s'enregistrer que depuis la source Anthropic officielle. Consultez [Suggérer des plugins par contexte](/docs/fr/plugins/relevance).

4592 4607 

4593<h3 id="plugintrustmessage">4608<h3 id="plugintrustmessage">

4594 `pluginTrustMessage`4609 `pluginTrustMessage`


4612 4627 

4613Limitez les sources de marketplace de plugins à partir desquelles les personnes de votre organisation peuvent ajouter et installer des plugins. Claude Code applique la liste d'autorisation lors de l'ajout de marketplace et lors de l'installation, la mise à jour, l'actualisation et la mise à jour automatique du plugin, avant toute opération réseau ou système de fichiers, donc une marketplace que quelqu'un a ajoutée avant que vous ne définissiez la politique ne peut pas être utilisée pour récupérer des plugins une fois que sa source ne correspond plus. Les utilisateurs bloqués voient une erreur nommant la politique gérée.4628Limitez les sources de marketplace de plugins à partir desquelles les personnes de votre organisation peuvent ajouter et installer des plugins. Claude Code applique la liste d'autorisation lors de l'ajout de marketplace et lors de l'installation, la mise à jour, l'actualisation et la mise à jour automatique du plugin, avant toute opération réseau ou système de fichiers, donc une marketplace que quelqu'un a ajoutée avant que vous ne définissiez la politique ne peut pas être utilisée pour récupérer des plugins une fois que sa source ne correspond plus. Les utilisateurs bloqués voient une erreur nommant la politique gérée.

4614 4629 

4615Si vous définissez cette clé dans la [console d'administration claude.ai](/docs/fr/server-managed-settings), claude.ai l'applique également lorsque quelqu'un de votre organisation ajoute une marketplace à partir d'un référentiel git sur claude.ai, comme [Comment les restrictions fonctionnent](/docs/fr/plugin-marketplaces#how-restrictions-work) le décrit.4630Si vous définissez cette clé dans la [console d'administration claude.ai](/docs/fr/server-managed-settings), claude.ai l'applique également lorsque quelqu'un de votre organisation ajoute une marketplace à partir d'un référentiel git sur claude.ai, comme [Comment les restrictions fonctionnent](/docs/fr/plugins/org#restrict-what-users-can-install) le décrit.

4616 4631 

4617* **Scope** : [`Managed`](#scopes)4632* **Scope** : [`Managed`](#scopes)

4618* **Type** : tableau d'objets source de marketplace ; consultez [Types de source autorisés](#allowed-source-types)4633* **Type** : tableau d'objets source de marketplace ; consultez [Types de source autorisés](#allowed-source-types)


4630}4645}

4631```4646```

4632 4647 

4633Vous pouvez également écrire cette clé comme `allowedMarketplaces` ; [Alias de clé Marketplace](#marketplace-key-aliases) décrit comment Claude Code traite l'alias et quelle version l'accepte. Cette clé est une porte de politique : elle contrôle ce que les utilisateurs peuvent ajouter mais n'enregistre rien. Pour restreindre et pré-enregistrer dans un seul fichier, consultez [Combiner avec `extraKnownMarketplaces`](#combine-with-extraknownmarketplaces). Pour la vue côté utilisateur, consultez [Restrictions de marketplace gérées](/docs/fr/plugin-marketplaces#managed-marketplace-restrictions).4648Vous pouvez également écrire cette clé comme `allowedMarketplaces` ; [Alias de clé Marketplace](#marketplace-key-aliases) décrit comment Claude Code traite l'alias et quelle version l'accepte. Cette clé est une porte de politique : elle contrôle ce que les utilisateurs peuvent ajouter mais n'enregistre rien. Pour restreindre et pré-enregistrer dans un seul fichier, consultez [Combiner avec `extraKnownMarketplaces`](#combine-with-extraknownmarketplaces). Pour la vue côté utilisateur, consultez [Restrictions de marketplace gérées](/docs/fr/plugins/org#restrict-what-users-can-install).

4634 4649 

4635<h4 id="allowed-source-types">4650<h4 id="allowed-source-types">

4636 Types de source autorisés4651 Types de source autorisés


4639Chaque entrée ci-dessous montre une entrée de liste d'autorisation par type de source et les champs qu'elle accepte. La plupart des types correspondent exactement ; `hostPattern` et `pathPattern` correspondent par regex, et les entrées `github` peuvent utiliser un [wildcard de propriétaire](#owner-wildcards).4654Chaque entrée ci-dessous montre une entrée de liste d'autorisation par type de source et les champs qu'elle accepte. La plupart des types correspondent exactement ; `hostPattern` et `pathPattern` correspondent par regex, et les entrées `github` peuvent utiliser un [wildcard de propriétaire](#owner-wildcards).

4640 4655 

4641| Source | Exemple d'entrée | Champs |4656| Source | Exemple d'entrée | Champs |

4642| :------------ | :------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------- |4657| :------------ | :------------------------------------------------------------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |

4643| `github` | `{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }` | `repo` requis ; `ref` est une branche ou une étiquette ; `path` est un sous-répertoire |4658| `github` | `{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }` | `repo` requis ; `ref` est une branche ou une étiquette ; `path` est un sous-répertoire |

4644| `git` | `{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git", "ref": "production" }` | `url` requis ; `ref` et `path` comme pour `github` |4659| `git` | `{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git", "ref": "production" }` | `url` requis ; `ref` et `path` comme pour `github` |

4645| `url` | `{ "source": "url", "url": "https://plugins.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }` | `url` requis ; `headers` ajoute des en-têtes HTTP pour l'accès authentifié |4660| `url` | `{ "source": "url", "url": "https://plugins.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }` | `url` requis ; `headers` ajoute des en-têtes HTTP pour l'accès authentifié |

4646| `file` | `{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }` | `path` requis, le chemin absolu vers un fichier `marketplace.json` |4661| `file` | `{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }` | `path` requis, le chemin absolu vers un fichier `marketplace.json` |

4647| `directory` | `{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }` | `path` requis, le chemin absolu vers un répertoire contenant `.claude-plugin/marketplace.json` |4662| `directory` | `{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }` | `path` requis, le chemin absolu vers un répertoire contenant `.claude-plugin/marketplace.json` |

4648| `hostPattern` | `{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }` | `hostPattern` requis, une regex correspondant à l'hôte de la marketplace |4663| `hostPattern` | `{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }` | `hostPattern` requis, une regex correspondant n'importe où dans l'hôte de la marketplace ; ancrez-la avec `^` et `$` pour correspondre à l'hôte entier |

4649| `pathPattern` | `{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }` | `pathPattern` requis, une regex correspondant au `path` des sources `file` et `directory` |4664| `pathPattern` | `{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }` | `pathPattern` requis, une regex correspondant n'importe où dans le `path` des sources `file` et `directory` ; commencez-la avec `^` pour épingler un préfixe |

4650| `skills-dir` | `{ "source": "skills-dir" }` | Pas de champs. Réactive l'analyse du plugin `~/.claude/skills/` |4665| `skills-dir` | `{ "source": "skills-dir" }` | Pas de champs. Réactive l'analyse du plugin `~/.claude/skills/` |

4651 4666 

4652Trois types de source portent des règles au-delà du tableau :4667Trois types de source portent des règles au-delà du tableau :

4653 4668 

4654* **`url`** : une marketplace URL télécharge uniquement le fichier `marketplace.json`, et Claude Code ne récupère pas les fichiers de plugin par chemin relatif depuis ce serveur, donc ses plugins doivent utiliser une [source de plugin](/docs/fr/plugin-marketplaces#plugin-sources) autre qu'un chemin relatif, comme une URL d'archive, qui peut être sur le même hôte. Pour les plugins avec des chemins relatifs, utilisez plutôt une marketplace basée sur Git. Consultez [Les plugins avec des chemins relatifs échouent dans les marketplaces basées sur URL](/docs/fr/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).4669* **`url`** : une marketplace URL télécharge uniquement le fichier `marketplace.json`, et Claude Code ne récupère pas les fichiers de plugin par chemin relatif depuis ce serveur, donc ses plugins doivent utiliser une [source de plugin](/docs/fr/plugins/marketplace-reference#plugin-sources) autre qu'un chemin relatif, comme une URL d'archive, qui peut être sur le même hôte. Pour les plugins avec des chemins relatifs, utilisez plutôt une marketplace basée sur Git. Consultez [Les plugins avec des chemins relatifs échouent dans les marketplaces basées sur URL](/docs/fr/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces).

4655* **`hostPattern`** : utilisez-le pour autoriser chaque marketplace sur un serveur GitHub Enterprise ou GitLab interne sans lister chaque référentiel. Claude Code correspond aux sources `github` par rapport à `github.com`, prend le nom d'hôte des sources `url`, et le prend des sources `git` selon la forme de l'[URL git](https://git-scm.com/docs/git-clone#_git_urls) :4670* **`hostPattern`** : utilisez-le pour autoriser chaque marketplace sur un serveur GitHub Enterprise ou GitLab interne sans lister chaque référentiel. Claude Code correspond aux sources `github` par rapport à `github.com`, prend le nom d'hôte des sources `url`, et le prend des sources `git` selon la forme de l'[URL git](https://git-scm.com/docs/git-clone#_git_urls) :

4656 4671 

4657 * Une URL avec un schéma, tel que `https://` ou `ssh://` : le nom d'hôte dans l'URL.4672 * Une URL avec un schéma, tel que `https://` ou `ssh://` : le nom d'hôte dans l'URL.


4661 Les sources `file` et `directory` n'ont pas d'hôte et ne correspondent jamais à une entrée `hostPattern`.4676 Les sources `file` et `directory` n'ont pas d'hôte et ne correspondent jamais à une entrée `hostPattern`.

4662* **`pathPattern`** : utilisez-le pour autoriser les marketplaces du système de fichiers aux côtés des entrées `hostPattern` pour les sources réseau. `".*"` autorise chaque chemin local ; un motif plus étroit tel que `"^/opt/approved/"` restreint à un répertoire.4677* **`pathPattern`** : utilisez-le pour autoriser les marketplaces du système de fichiers aux côtés des entrées `hostPattern` pour les sources réseau. `".*"` autorise chaque chemin local ; un motif plus étroit tel que `"^/opt/approved/"` restreint à un répertoire.

4663 4678 

4664Toute liste d'autorisation, même une vide, arrête également Claude Code de charger les [plugins `@skills-dir`](/docs/fr/plugins-reference#skills-directory-plugins) depuis `~/.claude/skills/`. Ajoutez l'entrée `{ "source": "skills-dir" }` pour continuer à les charger ; l'entrée n'a aucun sens en dehors de cette clé et `blockedMarketplaces`.4679Toute liste d'autorisation, même une vide, arrête également Claude Code de charger les [plugins `@skills-dir`](/docs/fr/plugins/loading#plugins-shared-through-a-repository) depuis `~/.claude/skills/`. Ajoutez l'entrée `{ "source": "skills-dir" }` pour continuer à les charger ; l'entrée n'a aucun sens en dehors de cette clé et `blockedMarketplaces`.

4665 4680 

4666<h4 id="owner-wildcards">4681<h4 id="owner-wildcards">

4667 Wildcards de propriétaire4682 Wildcards de propriétaire


4679}4694}

4680```4695```

4681 4696 

4682Seule la position du nom de référentiel entier peut être un wildcard. Claude Code compare les entrées telles que `*`, `*/plugins`, ou `acme-corp/tools-*` littéralement, donc elles ne correspondent à aucun référentiel.4697Seule la position du nom de référentiel entier peut être un wildcard. Claude Code ignore les entrées telles que `*`, `*/plugins`, ou `acme-corp/tools-*` comme invalides, donc elles ne correspondent à aucun référentiel.

4683 4698 

4684Les règles de correspondance diffèrent entre les deux paramètres :4699Les règles de correspondance diffèrent entre les deux paramètres :

4685 4700 


4719}4734}

4720```4735```

4721 4736 

4722Avec cette entrée, Claude Code garde une marketplace officielle déjà enregistrée disponible et, sur une machine vierge, enregistre la marketplace automatiquement la première fois que vous démarrez Claude Code de manière interactive. L'enregistrement automatique manque le plus souvent :4737Avec cette entrée, Claude Code garde une marketplace officielle déjà enregistrée disponible et, sur une machine vierge, enregistre la marketplace automatiquement la première fois que vous démarrez une session de terminal interactive. L'enregistrement automatique manque le plus souvent :

4723 4738 

4724* Les environnements non interactifs qui s'exécutent avant le premier lancement interactif de la machine.4739* Les environnements non interactifs qui s'exécutent avant la première session de terminal interactive de la machine.

4725* Les machines où Claude Code s'est déjà exécuté de manière interactive sous une politique qui bloquait la marketplace, comme le verrouillage de tableau vide. Claude Code enregistre la tentative bloquée et ne réessaie pas après le changement de politique.4740* Les machines où Claude Code a déjà exécuté une session de terminal interactive sous une politique qui bloquait la marketplace, comme le verrouillage de tableau vide. Claude Code enregistre la tentative bloquée et ne réessaie pas après le changement de politique.

4726 4741 

4727Sur ces machines, ajoutez la marketplace à [`extraKnownMarketplaces`](#extraknownmarketplaces) dans le même `managed-settings.json` pour que Claude Code l'enregistre automatiquement, ou exécutez `claude plugin marketplace add anthropics/claude-plugins-official`.4742Sur ces machines, ajoutez la marketplace à [`extraKnownMarketplaces`](#extraknownmarketplaces) dans le même `managed-settings.json` pour que Claude Code l'enregistre automatiquement, ou exécutez `claude plugin marketplace add anthropics/claude-plugins-official`.

4728 4743 


4830 `strictPluginOnlyCustomization.mcp`4845 `strictPluginOnlyCustomization.mcp`

4831</h3>4846</h3>

4832 4847 

4833Verrouillez la surface `mcp`. Claude Code arrête de charger les serveurs MCP depuis `~/.claude.json` et `.mcp.json`, et continue de charger les serveurs MCP de plugin, les serveurs [`managed-mcp.json`](/docs/fr/managed-mcp), et les serveurs de [`managedMcpServers`](#managedmcpservers).4848Verrouillez la surface `mcp`. Claude Code arrête de charger les serveurs MCP depuis `~/.claude.json` et `.mcp.json`, et continue de charger les serveurs MCP de plugin, les serveurs [`managed-mcp.json`](/docs/fr/managed-mcp) et les serveurs de [`managedMcpServers`](#managedmcpservers).

4834 4849 

4835* **Scope** : [`Managed`](#scopes)4850* **Scope** : [`Managed`](#scopes)

4836* **Type** : la chaîne `"mcp"` dans le tableau [`strictPluginOnlyCustomization`](#strictpluginonlycustomization)4851* **Type** : la chaîne `"mcp"` dans le tableau [`strictPluginOnlyCustomization`](#strictpluginonlycustomization)


4846 `enabledPlugins`4861 `enabledPlugins`

4847</h3>4862</h3>

4848 4863 

4849Activez ou désactivez les [plugins](/docs/fr/plugins) individuels, indexés par `plugin-name@marketplace-name`. Un plugin sans entrée à aucune portée revient à sa valeur [`defaultEnabled`](/docs/fr/plugins-reference#default-enablement). Lorsque vous activez ou désactivez un plugin avec `/plugin` ou `claude plugin enable`, Claude Code écrit cette clé pour vous.4864Activez ou désactivez les [plugins](/docs/fr/plugins/overview) individuels, indexés par `plugin-name@marketplace-name`. Un plugin sans entrée à aucune portée revient à sa valeur [`defaultEnabled`](/docs/fr/plugins/manifest-reference#fields) value. Lorsque vous activez ou désactivez un plugin avec `/plugin` ou `claude plugin enable`, Claude Code écrit cette clé pour vous.

4850 4865 

4851* **Scope** : [`Any file`](#scopes)4866* **Scope** : [`Any file`](#scopes)

4852* **Type** : objet mappant `plugin-name@marketplace-name` à un Boolean4867* **Type** : objet mappant `plugin-name@marketplace-name` à un Boolean


4873 4888 

4874Les paramètres de projet ont priorité sur les paramètres utilisateur, donc définir un plugin à `false` dans `~/.claude/settings.json` ne désactive pas un plugin que le `.claude/settings.json` du projet active. Pour refuser un plugin activé par le projet sur votre machine, définissez-le à `false` dans `.claude/settings.local.json` à la place. Les plugins forcément activés par les paramètres gérés ne peuvent pas être désactivés de cette façon, puisque les paramètres gérés remplacent les paramètres locaux.4889Les paramètres de projet ont priorité sur les paramètres utilisateur, donc définir un plugin à `false` dans `~/.claude/settings.json` ne désactive pas un plugin que le `.claude/settings.json` du projet active. Pour refuser un plugin activé par le projet sur votre machine, définissez-le à `false` dans `.claude/settings.local.json` à la place. Les plugins forcément activés par les paramètres gérés ne peuvent pas être désactivés de cette façon, puisque les paramètres gérés remplacent les paramètres locaux.

4875 4890 

4876L'activation d'un plugin à partir d'une source externe telle qu'un référentiel GitHub ou un package npm dans le `.claude/settings.json` d'un projet ne l'installe pas pour d'autres personnes. Sur chaque chemin qui charge les plugins, Claude Code signale le plugin comme non installé jusqu'à ce que chaque utilisateur [l'installe lui-même](/docs/fr/discover-plugins#configure-team-marketplaces).4891L'activation d'un plugin à partir d'une source externe telle qu'un référentiel GitHub ou un package npm dans le `.claude/settings.json` d'un projet ne l'installe pas pour d'autres personnes. Sur chaque chemin qui charge les plugins, Claude Code signale le plugin comme non installé jusqu'à ce que chaque utilisateur [l'installe lui-même](/docs/fr/plugins/org#require-plugins-per-repository).

4877 4892 

4878<h3 id="extraknownmarketplaces">4893<h3 id="extraknownmarketplaces">

4879 `extraKnownMarketplaces`4894 `extraKnownMarketplaces`


4908 4923 

4909[Ce qui s'exécute avant que vous approuviez un dossier](/docs/fr/permissions#what-runs-before-you-trust-a-folder) compare la porte de confiance avec le contenu qu'un référentiel peut fournir. Vous pouvez également écrire cette clé comme `additionalMarketplaces` ; consultez [Alias de clé Marketplace](#marketplace-key-aliases).4924[Ce qui s'exécute avant que vous approuviez un dossier](/docs/fr/permissions#what-runs-before-you-trust-a-folder) compare la porte de confiance avec le contenu qu'un référentiel peut fournir. Vous pouvez également écrire cette clé comme `additionalMarketplaces` ; consultez [Alias de clé Marketplace](#marketplace-key-aliases).

4910 4925 

4911Définissez `"autoUpdate": true` aux côtés de `source` pour que Claude Code actualise cette marketplace et mette à jour ses plugins installés en arrière-plan après le démarrage. Lorsqu'il est omis, `claude-plugins-official` et la plupart des autres marketplaces officielles d'Anthropic par défaut à `true`, et les marketplaces tierces par défaut à `false`. Consultez [Configurer les mises à jour automatiques](/docs/fr/discover-plugins#configure-auto-updates).4926Définissez `"autoUpdate": true` aux côtés de `source` pour que Claude Code actualise cette marketplace et mette à jour ses plugins installés en arrière-plan après le démarrage. Lorsqu'il est omis, `claude-plugins-official` et la plupart des autres marketplaces officielles d'Anthropic par défaut à `true`, et les marketplaces tierces par défaut à `false`. Consultez [Configurer les mises à jour automatiques](/docs/fr/plugins/install#keep-plugins-updated).

4912 4927 

4913Lorsque plus d'un fichier de paramètres définit une entrée de marketplace sous le même nom, Claude Code utilise l'entrée du [fichier de priorité la plus élevée](/docs/fr/settings#settings-precedence) entier. Cette entrée remplace l'entrée de priorité inférieure et n'hérite d'aucun de ses champs, donc une redéfinition ne peut pas combiner les `source.headers` d'authentification d'un fichier avec une URL qu'un autre fichier contrôle. Avant v2.1.228, Claude Code fusionnait les entrées de même nom champ par champ, donc une entrée dans un fichier de priorité plus élevée pouvait hériter des champs qu'elle ne définissait pas, y compris les `headers` d'un autre fichier.4928Lorsque plus d'un fichier de paramètres définit une entrée de marketplace sous le même nom, Claude Code utilise l'entrée du [fichier de priorité la plus élevée](/docs/fr/settings#settings-precedence) entier. Cette entrée remplace l'entrée de priorité inférieure et n'hérite d'aucun de ses champs, donc une redéfinition ne peut pas combiner les `source.headers` d'authentification d'un fichier avec une URL qu'un autre fichier contrôle. Avant v2.1.228, Claude Code fusionnait les entrées de même nom champ par champ, donc une entrée dans un fichier de priorité plus élevée pouvait hériter des champs qu'elle ne définissait pas, y compris les `headers` d'un autre fichier.

4914 4929 


4925* **`directory`** : un chemin du système de fichiers local, avec `path`, pour le développement uniquement4940* **`directory`** : un chemin du système de fichiers local, avec `path`, pour le développement uniquement

4926* **`settings`** : une marketplace en ligne déclarée directement dans le fichier de paramètres sans référentiel hébergé, avec `name` et `plugins`4941* **`settings`** : une marketplace en ligne déclarée directement dans le fichier de paramètres sans référentiel hébergé, avec `name` et `plugins`

4927 4942 

4928Le type de source `git` fonctionne avec n'importe quel service d'hébergement git, y compris GitLab auto-hébergé et Bitbucket. Claude Code clone le référentiel avec la même authentification que `git clone` utiliserait sur cette machine : assistants d'authentification configurés ou clés SSH. Un jeton de fournisseur tel que `GITHUB_TOKEN` prend effet uniquement via un assistant d'authentification qui le lit. Consultez [Référentiels privés](/docs/fr/plugin-marketplaces#private-repositories) pour les détails de configuration.4943Le type de source `git` fonctionne avec n'importe quel service d'hébergement git, y compris GitLab auto-hébergé et Bitbucket. Claude Code clone le référentiel avec la même authentification que `git clone` utiliserait sur cette machine : assistants d'authentification configurés ou clés SSH. Un jeton de fournisseur tel que `GITHUB_TOKEN` prend effet via un assistant d'authentification qui le lit. Consultez [Référentiels privés](/docs/fr/plugins/host-marketplace#grant-access-to-a-private-marketplace) pour les détails de configuration.

4929 4944 

4930Pour les sources `github` et `git`, Claude Code ne télécharge jamais le contenu de [Git LFS](https://git-lfs.com) lorsqu'il clone le référentiel de marketplace pour l'ajouter ou le mettre à jour. Les fichiers suivis par LFS sont extraits en tant que fichiers pointeurs, et la sortie d'ajout ou de mise à jour signale combien.4945Pour les sources `github` et `git`, Claude Code ne télécharge jamais le contenu de [Git LFS](https://git-lfs.com) lorsqu'il clone le référentiel de marketplace pour l'ajouter ou le mettre à jour. Les fichiers suivis par LFS sont extraits en tant que fichiers pointeurs, et la sortie d'ajout ou de mise à jour signale combien.

4931 4946 

4932Le champ `skipLfs` à l'intérieur de l'objet `source` est accepté et n'a aucun effet. Avant v2.1.274, Claude Code téléchargeait le contenu LFS sauf si vous définissiez `"skipLfs": true`.4947Le champ `skipLfs` à l'intérieur de l'objet `source` est accepté et n'a aucun effet. Avant v2.1.274, Claude Code téléchargeait le contenu LFS sauf si vous définissiez `"skipLfs": true`.

4933 4948 

4934Pour une source `url`, définissez `headersHelper` à l'intérieur de l'objet `source` lorsque les identifiants dans `headers` expirent et qu'une commande doit en produire un nouveau. Nécessite Claude Code v2.1.238 ou ultérieur. Pour ce que la commande doit imprimer et où Claude Code l'exécute, consultez [Écrire la commande headersHelper](/docs/fr/plugin-marketplaces#write-the-headershelper-command), et pour les cas où Claude Code ne l'exécute pas, consultez [Quand Claude Code ignore une commande headersHelper](/docs/fr/plugin-marketplaces#when-claude-code-skips-a-headershelper-command-or-drops-its-output). Une fois que vous définissez `headersHelper` sur une URL de marketplace `https://`, Claude Code exécute la commande à deux points, réutilisant la sortie d'une exécution pendant jusqu'à 60 secondes :4949Pour une source `url`, définissez `headersHelper` à l'intérieur de l'objet `source` lorsque les identifiants dans `headers` expirent et qu'une commande doit en produire un nouveau. Nécessite Claude Code v2.1.238 ou ultérieur. Pour ce que la commande doit imprimer et où Claude Code l'exécute, consultez [Écrire la commande headersHelper](/docs/fr/plugins/host-marketplace#write-the-headershelper-command), et pour les cas où Claude Code ne l'exécute pas, consultez [Quand Claude Code ignore une commande headersHelper](/docs/fr/plugins/host-marketplace#when-claude-code-skips-a-headershelper-command-or-drops-its-output). Une fois que vous définissez `headersHelper` sur une URL de marketplace `https://`, Claude Code exécute la commande à deux points, réutilisant la sortie d'une exécution pendant jusqu'à 60 secondes :

4935 4950 

4936* Avant chaque récupération du `marketplace.json` de cette marketplace, y compris une actualisation ultérieure. Claude Code envoie les en-têtes imprimés avec cette récupération.4951* Avant chaque récupération du `marketplace.json` de cette marketplace, y compris une actualisation ultérieure. Claude Code envoie les en-têtes imprimés avec cette récupération.

4937* Avant chaque téléchargement d'archive de plugin sur l'origine de l'URL de la marketplace, ce qui signifie le même schéma, hôte et port. Claude Code envoie la sortie avec ce téléchargement, et aucun autre téléchargement n'obtient les en-têtes.4952* Avant chaque téléchargement d'archive de plugin sur l'origine de l'URL de la marketplace, ce qui signifie le même schéma, hôte et port. Claude Code envoie la sortie avec ce téléchargement, et aucun autre téléchargement n'obtient les en-têtes.

4938 4953 

4939Claude Code ignore tout `headersHelper` défini dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un répertoire que vous ajoutez avec [`--add-dir`](/docs/fr/permissions#what-runs-before-you-trust-a-folder), sur une source `url` et sur une entrée de plugin en ligne, et envoie uniquement les `headers` fixes définis dans ce fichier. [Comment les utilisateurs acceptent une commande headersHelper](/docs/fr/plugin-marketplaces#how-users-accept-a-headershelper-command) couvre les autres fichiers de paramètres.4954Claude Code ignore tout `headersHelper` défini dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un répertoire que vous ajoutez avec [`--add-dir`](/docs/fr/permissions#what-runs-before-you-trust-a-folder), sur une source `url` et sur une entrée de plugin en ligne, et envoie uniquement les `headers` fixes définis dans ce fichier. [Comment les utilisateurs acceptent une commande headersHelper](/docs/fr/plugins/host-marketplace#how-users-accept-a-headershelper-command) couvre les autres fichiers de paramètres.

4940 4955 

4941Les plugins listés dans une source `settings` doivent référencer des sources externes telles que GitHub ou npm, et le `name` doit correspondre à la clé de marketplace. Vous activez toujours chaque plugin séparément dans `enabledPlugins`. Cet exemple déclare un plugin en ligne :4956Les plugins listés dans une source `settings` doivent référencer des sources externes telles que GitHub ou npm, et le `name` doit correspondre à la clé de marketplace. Vous activez toujours chaque plugin séparément dans `enabledPlugins`. Cet exemple déclare un plugin en ligne :

4942 4957 


4962}4977}

4963```4978```

4964 4979 

4965Une entrée de plugin sous `source: 'settings'` dont le propre `source` est une [`archive`](/docs/fr/plugin-marketplaces#zip-archives) peut définir `headers` pour le téléchargement d'archive. Si la valeur que vous mettriez dans `headers` est éphémère, comme un jeton que votre registre frappe à la demande, définissez une commande `headersHelper` à la place. Une entrée peut définir les deux. Les deux champs nécessitent Claude Code v2.1.238 ou ultérieur.4980Une entrée de plugin sous `source: 'settings'` dont le propre `source` est une [`archive`](/docs/fr/plugins/marketplace-reference#archive-plugin-source) peut définir `headers` pour le téléchargement d'archive. Si la valeur que vous mettriez dans `headers` est éphémère, comme un jeton que votre registre frappe à la demande, définissez une commande `headersHelper` à la place. Une entrée peut définir les deux. Les deux champs nécessitent Claude Code v2.1.238 ou ultérieur.

4966 4981 

4967Claude Code envoie les `headers` de l'entrée, et tout ce que la commande imprime, avec le téléchargement d'archive de ce plugin et avec aucun autre téléchargement. Claude Code exécute la commande uniquement lorsqu'un utilisateur [installe ou met à jour ce seul plugin par lui-même](/docs/fr/plugin-marketplaces#how-users-accept-a-headershelper-command). Trois règles supplémentaires dépendent du fichier qui contient l'entrée :4982Claude Code envoie les `headers` de l'entrée, et tout ce que la commande imprime, avec le téléchargement d'archive de ce plugin et avec aucun autre téléchargement. Claude Code exécute la commande uniquement lorsqu'un utilisateur [installe ou met à jour ce seul plugin par lui-même](/docs/fr/plugins/host-marketplace#how-users-accept-a-headershelper-command). Trois règles supplémentaires dépendent du fichier qui contient l'entrée :

4968 4983 

4969* **`strict`** : contrairement à une entrée dans le `marketplace.json` d'une marketplace, une entrée dans les paramètres n'a pas besoin de `"strict": false`, car un fichier de paramètres ne porte aucun champ de manifeste à intégrer. Consultez [Mode strict](/docs/fr/plugin-marketplaces#strict-mode).4984* **`strict`** : contrairement à une entrée dans le `marketplace.json` d'une marketplace, une entrée dans les paramètres n'a pas besoin de `"strict": false`, car un fichier de paramètres ne porte aucun champ de manifeste à intégrer. Consultez [Mode strict](/docs/fr/plugins/marketplace-reference#strict-mode).

4970* **Confiance de dossier** : pour une entrée dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet, Claude Code exécute la commande uniquement après que l'utilisateur ait également [approuvé ce dossier](/docs/fr/permissions#what-runs-before-you-trust-a-folder).4985* **Confiance de dossier** : pour une entrée dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet, Claude Code exécute la commande uniquement après que l'utilisateur ait également [approuvé ce dossier](/docs/fr/permissions#what-runs-before-you-trust-a-folder).

4971* **Filtre d'en-tête** : Claude Code supprime les [noms d'en-têtes de routage de demande et d'identité client](/docs/fr/plugin-marketplaces#when-claude-code-skips-a-headershelper-command-or-drops-its-output) d'une entrée dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet, car un référentiel peut fournir ces fichiers. Claude Code applique le même filtre à une entrée de catalogue et à une entrée dans un répertoire `--add-dir`, et aucun filtre à une entrée dans vos paramètres utilisateur, un fichier `--settings`, ou les paramètres gérés.4986* **Filtre d'en-tête** : Claude Code supprime les [noms d'en-têtes de routage de demande et d'identité client](/docs/fr/plugins/host-marketplace#when-claude-code-skips-a-headershelper-command-or-drops-its-output) d'une entrée dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet, car un référentiel peut fournir ces fichiers. Claude Code applique le même filtre à une entrée de catalogue et à une entrée dans un répertoire `--add-dir`, et aucun filtre à une entrée dans vos paramètres utilisateur, un fichier `--settings`, ou les paramètres gérés.

4972 4987 

4973<h4 id="marketplace-key-aliases">4988<h4 id="marketplace-key-aliases">

4974 Alias de clé Marketplace4989 Alias de clé Marketplace


4985 `pluginConfigs`5000 `pluginConfigs`

4986</h3>5001</h3>

4987 5002 

4988Stockez les réponses non sensibles que vous donnez au dialogue de configuration [`userConfig`](/docs/fr/plugins-reference#user-configuration) d'un plugin, indexées par ID de plugin. Claude Code écrit cette clé dans vos paramètres utilisateur lorsque vous remplissez le dialogue, donc vous n'avez pas besoin de l'éditer à la main. Claude Code stocke les options sensibles dans le Keychain macOS à la place, revenant à `~/.claude/.credentials.json` lorsque le Keychain rejette l'écriture ; sur les plates-formes sans un trousseau pris en charge, il les stocke dans `~/.claude/.credentials.json`.5003Stockez les réponses non sensibles que vous donnez au dialogue de configuration [`userConfig`](/docs/fr/plugins/manifest-reference#user-configuration) d'un plugin, indexées par ID de plugin. Claude Code écrit cette clé dans vos paramètres utilisateur lorsque vous remplissez le dialogue, donc vous n'avez pas besoin de l'éditer à la main. Claude Code stocke les options sensibles dans le Keychain macOS à la place, revenant à `~/.claude/.credentials.json` lorsque le Keychain rejette l'écriture ; sur les plates-formes sans un trousseau pris en charge, il les stocke dans `~/.claude/.credentials.json`.

4989 5004 

4990* **Scope** : [`User or managed`](#scopes)5005* **Scope** : [`User or managed`](#scopes)

4991* **Type** : objet mappant un ID de plugin à un objet avec un champ `options`, mappant chaque nom d'option à une chaîne, un nombre, un Boolean, ou un tableau de chaînes, et un champ `mcpServers` optionnel contenant les valeurs de configuration utilisateur par serveur dans la même forme5006* **Type** : objet mappant un ID de plugin à un objet avec un champ `options`, mappant chaque nom d'option à une chaîne, un nombre, un Boolean, ou un tableau de chaînes, et un champ `mcpServers` optionnel contenant les valeurs de configuration utilisateur par serveur dans la même forme


5233}5248}

5234```5249```

5235 5250 

5236Le propre `settings.json` d'un plugin peut également fournir cette clé ; voir [Ship default settings with your plugin](/docs/fr/plugins#ship-default-settings-with-your-plugin).5251Le propre `settings.json` d'un plugin peut également fournir cette clé ; voir [Ship default settings with your plugin](/docs/fr/plugins/components#default-settings).

5237 5252 

5238<h3 id="crosssessioninbound">5253<h3 id="crosssessioninbound">

5239 `crossSessionInbound`5254 `crossSessionInbound`


5329 * `"in-process"` : les coéquipiers s'exécutent à l'intérieur de votre volet terminal principal5344 * `"in-process"` : les coéquipiers s'exécutent à l'intérieur de votre volet terminal principal

5330 * `"auto"` : volets divisés quand vous exécutez à l'intérieur de tmux, ou à l'intérieur d'iTerm2 avec `it2` sur votre `PATH` ou tmux installé ; in-process sinon5345 * `"auto"` : volets divisés quand vous exécutez à l'intérieur de tmux, ou à l'intérieur d'iTerm2 avec `it2` sur votre `PATH` ou tmux installé ; in-process sinon

5331 * `"tmux"` : volets divisés utilisant tmux ou iTerm2, détectés à partir de votre terminal5346 * `"tmux"` : volets divisés utilisant tmux ou iTerm2, détectés à partir de votre terminal

5332 * `"iterm2"` : volets divisés natifs iTerm2 via le CLI `it2`, dans Claude Code v2.1.186 ou ultérieur5347 * `"iterm2"` : volets divisés natifs iTerm2 via le CLI `it2`

5333* **Default** : `"in-process"`5348* **Default** : `"in-process"`

5334* **Per-session overrides** : `--teammate-mode` prend la priorité sur cette clé pour une session5349* **Per-session overrides** : `--teammate-mode` prend la priorité sur cette clé pour une session

5335 5350 


5339}5354}

5340```5355```

5341 5356 

5342La valeur `iterm2` nécessite Claude Code v2.1.186 ou ultérieur.

5343 

5344<span id="worktree-settings" />5357<span id="worktree-settings" />

5345 5358 

5346<h3 id="worktree">5359<h3 id="worktree">


6200 6213 

6201Claude Code accepte toujours un `--mcp-config` dont les serveurs sont tous des entrées `type: "sdk"` en processus, de sorte que le SDK Agent et l'extension VS Code continuent de fonctionner. Les utilisateurs peuvent toujours ajouter des serveurs avec `claude mcp add` ou un fichier `.mcp.json` ; pour un contrôle par serveur, définissez également [`allowedMcpServers`](/docs/fr/managed-mcp). Nécessite Claude Code v2.1.193 ou ultérieur.6214Claude Code accepte toujours un `--mcp-config` dont les serveurs sont tous des entrées `type: "sdk"` en processus, de sorte que le SDK Agent et l'extension VS Code continuent de fonctionner. Les utilisateurs peuvent toujours ajouter des serveurs avec `claude mcp add` ou un fichier `.mcp.json` ; pour un contrôle par serveur, définissez également [`allowedMcpServers`](/docs/fr/managed-mcp). Nécessite Claude Code v2.1.193 ou ultérieur.

6202 6215 

6216La même vérification couvre les dossiers de plugins nommés dans la variable d'environnement [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/fr/env-vars#variables), ce qui nécessite Claude Code v2.1.280 ou ultérieur. Lorsque la variable nomme un dossier, Claude Code se termine avec la même erreur, et l'erreur dit de désactiver la variable.

6217 

6203Dans les sessions cloud, Claude Code ignore également les mises à jour MCP livrées par le serveur en milieu de session, le chemin derrière la configuration de session cloud et les appels SDK `setMcpServers()` qui atteignent ces sessions. Les entrées `type: "sdk"` en processus restent exemptes là aussi. Avant v2.1.239, un `--mcp-config` livré par le serveur bloquait le démarrage d'une session cloud.6218Dans les sessions cloud, Claude Code ignore également les mises à jour MCP livrées par le serveur en milieu de session, le chemin derrière la configuration de session cloud et les appels SDK `setMcpServers()` qui atteignent ces sessions. Les entrées `type: "sdk"` en processus restent exemptes là aussi. Avant v2.1.239, un `--mcp-config` livré par le serveur bloquait le démarrage d'une session cloud.

6204 6219 

6205<h3 id="forceremotesettingsrefresh">6220<h3 id="forceremotesettingsrefresh">

skills.md +16 −16

Details

129| Projet | `.claude/skills/<skill-name>/SKILL.md` | Sessions dans ce référentiel. Validez-la pour que votre équipe l'obtienne aussi |129| Projet | `.claude/skills/<skill-name>/SKILL.md` | Sessions dans ce référentiel. Validez-la pour que votre équipe l'obtienne aussi |

130| Imbriquée | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sessions démarrées dans ou sous `<subdir>`. Une session démarrée au-dessus la charge une fois que Claude travaille sur des fichiers là-bas. Voir [monorepos et sous-répertoires](#discovery-from-parent-and-nested-directories) |130| Imbriquée | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sessions démarrées dans ou sous `<subdir>`. Une session démarrée au-dessus la charge une fois que Claude travaille sur des fichiers là-bas. Voir [monorepos et sous-répertoires](#discovery-from-parent-and-nested-directories) |

131| Répertoire supplémentaire | `.claude/skills/<skill-name>/SKILL.md` dans un répertoire que vous transmettez avec `--add-dir` | Cette session. Voir [répertoires en dehors du projet](#skills-from-additional-directories) |131| Répertoire supplémentaire | `.claude/skills/<skill-name>/SKILL.md` dans un répertoire que vous transmettez avec `--add-dir` | Cette session. Voir [répertoires en dehors du projet](#skills-from-additional-directories) |

132| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Partout où le [plugin](/docs/fr/plugins) est activé, en tant que `/plugin-name:skill-name` |132| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Partout où le [plugin](/docs/fr/plugins/overview) est activé, en tant que `/plugin-name:skill-name` |

133| Compte claude.ai | Skills activées pour votre compte claude.ai | Sessions Cowork, sessions cloud et sessions de terminal où vous vous connectez avec ce compte. Voir [Skills synchronisées depuis claude.ai](#how-synced-skills-behave) |133| Compte claude.ai | Skills activées pour votre compte claude.ai | Sessions Cowork, sessions cloud et sessions de terminal où vous vous connectez avec ce compte. Voir [Skills synchronisées depuis claude.ai](#how-synced-skills-behave) |

134 134 

135Les dossiers de skills suivent également ces règles :135Les dossiers de skills suivent également ces règles :

136 136 

137* **Dossiers avec lien symbolique** : une entrée `<skill-name>` à l'emplacement entreprise, personnel ou projet peut être un lien symbolique vers un répertoire ailleurs sur le disque. Claude Code lit `SKILL.md` depuis la cible et charge la skill une seule fois même si plusieurs emplacements pointent vers la même cible. Les skills de plugin [gèrent les liens symboliques différemment](/docs/fr/plugins-reference#share-files-within-a-marketplace-with-symlinks).137* **Dossiers avec lien symbolique** : une entrée `<skill-name>` à l'emplacement entreprise, personnel ou projet peut être un lien symbolique vers un répertoire ailleurs sur le disque. Claude Code lit `SKILL.md` depuis la cible et charge la skill une seule fois même si plusieurs emplacements pointent vers la même cible. Les skills de plugin [gèrent les liens symboliques différemment](/docs/fr/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).

138* **Nom réservé** : ne nommez pas un dossier de skill `synced`, quelle que soit la casse. Claude Code utilise `~/.claude/skills/synced/` pour les [skills téléchargées depuis claude.ai](#where-synced-skills-load) et ignore une skill que vous créez à ce nom aux emplacements entreprise, personnel et projet.138* **Nom réservé** : ne nommez pas un dossier de skill `synced`, quelle que soit la casse. Claude Code utilise `~/.claude/skills/synced/` pour les [skills téléchargées depuis claude.ai](#where-synced-skills-load) et ignore une skill que vous créez à ce nom aux emplacements entreprise, personnel et projet.

139* **Fichiers de commande** : un fichier Markdown dans `.claude/commands/` est le format plus ancien et fonctionne toujours. Il supporte le même [frontmatter](#frontmatter-reference) sauf `name` et `paths`. Pour trouver le nom que vous tapez pour l'invoquer, voir [Comment une skill obtient son nom de commande](#how-a-skill-gets-its-command-name). Préférez une skill pour les nouveaux travaux, puisque les skills supportent aussi les [fichiers de support](#add-supporting-files).139* **Fichiers de commande** : un fichier Markdown dans `.claude/commands/` est le format plus ancien et fonctionne toujours. Il supporte le même [frontmatter](#frontmatter-reference) sauf `name` et `paths`. Pour trouver le nom que vous tapez pour l'invoquer, voir [Comment une skill obtient son nom de commande](#how-a-skill-gets-its-command-name). Préférez une skill pour les nouveaux travaux, puisque les skills supportent aussi les [fichiers de support](#add-supporting-files).

140* **Dossier de skill en tant que plugin** : ajoutez un `.claude-plugin/plugin.json` à un dossier de skill et il se charge en tant que [plugin](/docs/fr/plugins-reference#skills-directory-plugins) nommé `<name>@skills-dir`, pour qu'il puisse regrouper des agents, des hooks et des serveurs MCP. Dans un `.claude/skills/` de projet, cela nécessite d'accepter d'abord la boîte de dialogue de confiance de l'espace de travail.140* **Dossier de skill en tant que plugin** : ajoutez un `.claude-plugin/plugin.json` à un dossier de skill et il se charge en tant que [plugin](/docs/fr/plugins/loading#plugins-shared-through-a-repository) nommé `<name>@skills-dir`, pour qu'il puisse regrouper des agents, des hooks et des serveurs MCP. Dans un `.claude/skills/` de projet, cela nécessite d'accepter d'abord la boîte de dialogue de confiance de l'espace de travail.

141 141 

142<h3 id="discovery-from-parent-and-nested-directories">142<h3 id="discovery-from-parent-and-nested-directories">

143 Charger les skills dans les monorepos et les sous-répertoires143 Charger les skills dans les monorepos et les sous-répertoires


275 275 

276Claude Code surveille les répertoires de skills pour les modifications de fichiers, sauf en [mode bare](/docs/fr/headless#start-faster-with-bare-mode). Quand vous ajoutez, éditez ou supprimez une skill sous `~/.claude/skills/`, le `.claude/skills/` du projet, ou un `.claude/skills/` à l'intérieur d'un répertoire `--add-dir`, Claude Code récupère la modification dans la session actuelle, sans redémarrage. Si vous créez un répertoire de skills de niveau supérieur qui n'existait pas quand la session a démarré, redémarrez Claude Code pour qu'il puisse surveiller le nouveau répertoire.276Claude Code surveille les répertoires de skills pour les modifications de fichiers, sauf en [mode bare](/docs/fr/headless#start-faster-with-bare-mode). Quand vous ajoutez, éditez ou supprimez une skill sous `~/.claude/skills/`, le `.claude/skills/` du projet, ou un `.claude/skills/` à l'intérieur d'un répertoire `--add-dir`, Claude Code récupère la modification dans la session actuelle, sans redémarrage. Si vous créez un répertoire de skills de niveau supérieur qui n'existait pas quand la session a démarré, redémarrez Claude Code pour qu'il puisse surveiller le nouveau répertoire.

277 277 

278La détection de changement en direct couvre uniquement le texte `SKILL.md`. Pour un dossier de skill qui est aussi un [plugin](/docs/fr/plugins-reference#skills-directory-plugins), les modifications apportées à `hooks/`, `.mcp.json`, `agents/` et `output-styles/` nécessitent `/reload-plugins` pour prendre effet.278La détection de changement en direct couvre uniquement le texte `SKILL.md`. Pour un dossier de skill qui est aussi un [plugin](/docs/fr/plugins/loading#plugins-shared-through-a-repository), les modifications apportées à `hooks/`, `.mcp.json`, `agents/` et `output-styles/` nécessitent `/reload-plugins` pour prendre effet.

279 279 

280<h3 id="remove-a-skill">280<h3 id="remove-a-skill">

281 Supprimer une skill281 Supprimer une skill


285 285 

286* **Skill personnelle ou de projet** : supprimez le répertoire de la skill, `~/.claude/skills/<skill-name>/` ou `.claude/skills/<skill-name>/`. Claude Code la [supprime de `/skills` dans la session actuelle](#live-change-detection) ; le contenu que Claude Code a déjà chargé depuis elle suit le [cycle de vie du contenu de skill](#skill-content-lifecycle).286* **Skill personnelle ou de projet** : supprimez le répertoire de la skill, `~/.claude/skills/<skill-name>/` ou `.claude/skills/<skill-name>/`. Claude Code la [supprime de `/skills` dans la session actuelle](#live-change-detection) ; le contenu que Claude Code a déjà chargé depuis elle suit le [cycle de vie du contenu de skill](#skill-content-lifecycle).

287* **Skill d'entreprise** : un administrateur supprime le répertoire de la skill depuis `.claude/skills/` à l'intérieur du [répertoire des paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), par exemple `/etc/claude-code/.claude/skills/<skill-name>/` sur Linux.287* **Skill d'entreprise** : un administrateur supprime le répertoire de la skill depuis `.claude/skills/` à l'intérieur du [répertoire des paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), par exemple `/etc/claude-code/.claude/skills/<skill-name>/` sur Linux.

288* **Skill de plugin** : désactivez ou désinstallez le plugin qui la fournit, depuis le menu `/plugin` ou avec `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code décharge les skills du plugin quand [le changement s'applique](/docs/fr/discover-plugins#apply-plugin-changes-without-restarting) ou quand vous redémarrez.288* **Skill de plugin** : désactivez ou désinstallez le plugin qui la fournit, depuis le menu `/plugin` ou avec `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code décharge les skills du plugin quand [le changement s'applique](/docs/fr/plugins/cli-reference#reload-plugins) ou quand vous redémarrez.

289* **Skill synchronisée depuis claude.ai** : désactivez la skill pour votre compte claude.ai, au même endroit où vous l'[avez activée](#skills-in-cowork-and-cloud-sessions). Claude Code la supprime de `~/.claude/skills/synced/` la prochaine fois qu'elle [synchronise vos skills](#where-synced-skills-load). Si vous supprimez le répertoire à la main à la place, la prochaine synchronisation le télécharge à nouveau pendant que la skill reste activée sur claude.ai.289* **Skill synchronisée depuis claude.ai** : désactivez la skill pour votre compte claude.ai, au même endroit où vous l'[avez activée](#skills-in-cowork-and-cloud-sessions). Claude Code la supprime de `~/.claude/skills/synced/` la prochaine fois qu'elle [synchronise vos skills](#where-synced-skills-load). Si vous supprimez le répertoire à la main à la place, la prochaine synchronisation le télécharge à nouveau pendant que la skill reste activée sur claude.ai.

290* **Skill regroupée** : définissez [`disableBundledSkills`](#bundled-skills) sur `true` pour désactiver les skills regroupées, ou définissez une skill sur `"off"` dans [`skillOverrides`](#override-skill-visibility-from-settings) pour la masquer.290* **Skill regroupée** : définissez [`disableBundledSkills`](#bundled-skills) sur `true` pour désactiver les skills regroupées, ou définissez une skill sur `"off"` dans [`skillOverrides`](#override-skill-visibility-from-settings) pour la masquer.

291 291 


389 389 

390| Chemin de distribution | Champs de frontmatter que vous pouvez utiliser |390| Chemin de distribution | Champs de frontmatter que vous pouvez utiliser |

391| :----------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- |391| :----------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- |

392| Compétences Claude Code à [n'importe quel niveau](#where-skills-live), y compris les compétences [plugin](/docs/fr/plugins) | Tous les champs du tableau ci-dessus |392| Compétences Claude Code à [n'importe quel niveau](#where-skills-live), y compris les compétences [plugin](/docs/fr/plugins/overview) | Tous les champs du tableau ci-dessus |

393| Téléchargements de compétences claude.ai, l'API Skills et l'empaquetage avec `package_skill.py` de [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |393| Téléchargements de compétences claude.ai, l'API Skills et l'empaquetage avec `package_skill.py` de [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |

394 394 

395Lorsque vous activez une compétence personnelle pour votre compte claude.ai, par exemple pour l'utiliser dans [les sessions Cowork et cloud](#skills-in-cowork-and-cloud-sessions) et les routines, vous la téléchargez sur claude.ai, donc les mêmes règles s'appliquent.395Lorsque vous activez une compétence personnelle pour votre compte claude.ai, par exemple pour l'utiliser dans [les sessions Cowork et cloud](#skills-in-cowork-and-cloud-sessions) et les routines, vous la téléchargez sur claude.ai, donc les mêmes règles s'appliquent.


411Le tableau ci-dessous montre d'où provient le nom de la commande pour chaque disposition :411Le tableau ci-dessous montre d'où provient le nom de la commande pour chaque disposition :

412 412 

413| Emplacement de la compétence | Source du nom de la commande | Exemple |413| Emplacement de la compétence | Source du nom de la commande | Exemple |

414| :--------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- |414| :--------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |

415| Répertoire de compétence sous `~/.claude/skills/` ou `.claude/skills/` | Nom du répertoire | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |415| Répertoire de compétence sous `~/.claude/skills/` ou `.claude/skills/` | Nom du répertoire | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |

416| Répertoire `.claude/skills/` [imbriqué](#where-skills-live), lorsque le nom entre en conflit avec une autre compétence | Chemin du sous-répertoire relatif au répertoire de travail, puis le nom du répertoire de compétence | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |416| Répertoire `.claude/skills/` [imbriqué](#where-skills-live), lorsque le nom entre en conflit avec une autre compétence | Chemin du sous-répertoire relatif au répertoire de travail, puis le nom du répertoire de compétence | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |

417| Fichier sous `.claude/commands/` | Nom du fichier sans extension | `.claude/commands/deploy.md` → `/deploy` |417| Fichier sous `.claude/commands/` | Nom du fichier sans extension | `.claude/commands/deploy.md` → `/deploy` |

418| Fichier dans un sous-répertoire de `.claude/commands/` | Chemin du sous-répertoire relatif à `commands/` avec chaque `/` remplacé par `:`, puis le nom du fichier sans extension | `.claude/commands/frontend/component.md` → `/frontend:component` |418| Fichier dans un sous-répertoire de `.claude/commands/` | Chemin du sous-répertoire relatif à `commands/` avec chaque `/` remplacé par `:`, puis le nom du fichier sans extension | `.claude/commands/frontend/component.md` → `/frontend:component` |

419| Sous-répertoire `skills/` du plugin | Frontmatter `name` ou le nom du répertoire, préfixé par le plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, ou `/my-plugin:fancy` avec `name: fancy` |419| Sous-répertoire `skills/` du plugin | Frontmatter `name` ou le nom du répertoire, préfixé par le plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, ou `/my-plugin:fancy` avec `name: fancy` |

420| `SKILL.md` racine du plugin | Frontmatter `name`, avec le nom du répertoire du plugin comme secours | `my-plugin/SKILL.md` avec `name: review` → `/my-plugin:review`. Voir [Règles de comportement du chemin](/docs/fr/plugins-reference#path-behavior-rules) |420| `SKILL.md` racine du plugin | Frontmatter `name`, avec le nom du répertoire du plugin comme secours | `my-plugin/SKILL.md` avec `name: review` → `/my-plugin:review`. Voir [une seule compétence à la racine du plugin](/docs/fr/plugins/components#skills) |

421| Compétence [synchronisée depuis claude.ai](#how-synced-skills-behave) | Le nom de la compétence sur votre compte claude.ai, préfixé avec `anthropic-skills:` | Compétence de compte `deploy` → `/anthropic-skills:deploy`, ou `/deploy` si aucune autre commande n'utilise ce nom |421| Compétence [synchronisée depuis claude.ai](#how-synced-skills-behave) | Le nom de la compétence sur votre compte claude.ai, préfixé avec `anthropic-skills:` | Compétence de compte `deploy` → `/anthropic-skills:deploy`, ou `/deploy` si aucune autre commande n'utilise ce nom |

422 422 

423Dans une compétence de plugin, le frontmatter `name` remplace le nom du répertoire dans le dernier segment de la commande, donc `my-plugin/skills/review/SKILL.md` avec `name: fancy` devient `/my-plugin:fancy`. Le `/fancy` nu invoque également la compétence à moins qu'une autre commande n'utilise déjà ce nom. Si le `name` que vous écrivez commence déjà par le propre préfixe du plugin, Claude Code n'ajoute pas le préfixe à nouveau sur v2.1.246 ou ultérieur. Par exemple, `name: my-plugin:fancy` devient toujours `/my-plugin:fancy`. De v2.1.216 à v2.1.245, Claude Code doublait le préfixe lorsque le `name` le portait déjà.423Dans une compétence de plugin, le frontmatter `name` remplace le nom du répertoire dans le dernier segment de la commande, donc `my-plugin/skills/review/SKILL.md` avec `name: fancy` devient `/my-plugin:fancy`. Le `/fancy` nu invoque également la compétence à moins qu'une autre commande n'utilise déjà ce nom. Si le `name` que vous écrivez commence déjà par le propre préfixe du plugin, Claude Code n'ajoute pas le préfixe à nouveau sur v2.1.246 ou ultérieur. Par exemple, `name: my-plugin:fancy` devient toujours `/my-plugin:fancy`. De v2.1.216 à v2.1.245, Claude Code doublait le préfixe lorsque le `name` le portait déjà.


433Les compétences prennent en charge la substitution de chaîne pour les valeurs dynamiques dans le contenu de la compétence :433Les compétences prennent en charge la substitution de chaîne pour les valeurs dynamiques dans le contenu de la compétence :

434 434 

435| Variable | Description |435| Variable | Description |

436| :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |436| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

437| `$ARGUMENTS` | Tous les arguments passés lors de l'invocation de la compétence. Lorsqu'aucun espace réservé ne reçoit un argument, Claude Code ajoute `ARGUMENTS: <value>` à la fin. Voir [Passer des arguments aux compétences](#pass-arguments-to-skills). |437| `$ARGUMENTS` | Tous les arguments passés lors de l'invocation de la compétence. Lorsqu'aucun espace réservé ne reçoit un argument, Claude Code ajoute `ARGUMENTS: <value>` à la fin. Voir [Passer des arguments aux compétences](#pass-arguments-to-skills). |

438| `$ARGUMENTS[N]` | Accédez à un argument spécifique par index basé sur 0, comme `$ARGUMENTS[0]` pour le premier argument. |438| `$ARGUMENTS[N]` | Accédez à un argument spécifique par index basé sur 0, comme `$ARGUMENTS[0]` pour le premier argument. |

439| `$N` | Raccourci pour `$ARGUMENTS[N]`, comme `$0` pour le premier argument ou `$1` pour le second. |439| `$N` | Raccourci pour `$ARGUMENTS[N]`, comme `$0` pour le premier argument ou `$1` pour le second. |


442| `${CLAUDE_EFFORT}` | Le niveau d'effort actuel : `low`, `medium`, `high`, `xhigh` ou `max`. Ultracode n'est pas un niveau distinct et est signalé comme `xhigh`. Utilisez ceci pour adapter les instructions de compétence au paramètre d'effort actif. |442| `${CLAUDE_EFFORT}` | Le niveau d'effort actuel : `low`, `medium`, `high`, `xhigh` ou `max`. Ultracode n'est pas un niveau distinct et est signalé comme `xhigh`. Utilisez ceci pour adapter les instructions de compétence au paramètre d'effort actif. |

443| `${CLAUDE_SKILL_DIR}` | Le répertoire contenant le fichier `SKILL.md` de la compétence. Pour les compétences de plugin, c'est le sous-répertoire de la compétence dans le plugin, pas la racine du plugin. Utilisez ceci dans les commandes d'injection bash pour référencer les scripts ou fichiers fournis avec la compétence, quel que soit le répertoire de travail actuel. |443| `${CLAUDE_SKILL_DIR}` | Le répertoire contenant le fichier `SKILL.md` de la compétence. Pour les compétences de plugin, c'est le sous-répertoire de la compétence dans le plugin, pas la racine du plugin. Utilisez ceci dans les commandes d'injection bash pour référencer les scripts ou fichiers fournis avec la compétence, quel que soit le répertoire de travail actuel. |

444| `${CLAUDE_PROJECT_DIR}` | Le répertoire racine du projet. C'est le même chemin que [hooks](/docs/fr/hooks#reference-scripts-by-path) et les serveurs MCP reçoivent comme `CLAUDE_PROJECT_DIR`. Utilisez ceci pour référencer les scripts ou fichiers locaux du projet, comme `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, indépendamment de l'endroit où la compétence est installée. |444| `${CLAUDE_PROJECT_DIR}` | Le répertoire racine du projet. C'est le même chemin que [hooks](/docs/fr/hooks#reference-scripts-by-path) et les serveurs MCP reçoivent comme `CLAUDE_PROJECT_DIR`. Utilisez ceci pour référencer les scripts ou fichiers locaux du projet, comme `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, indépendamment de l'endroit où la compétence est installée. |

445| `${CLAUDE_PLUGIN_ROOT}` | Le répertoire d'installation du plugin. Substitué uniquement dans les compétences de plugin. Utilisez ceci pour référencer les scripts ou fichiers fournis n'importe où dans le plugin, y compris les ressources partagées entre les compétences du plugin. Voir [les variables d'environnement du plugin](/docs/fr/plugins-reference#environment-variables). |445| `${CLAUDE_PLUGIN_ROOT}` | Le répertoire d'installation du plugin. Substitué uniquement dans les compétences de plugin. Utilisez ceci pour référencer les scripts ou fichiers fournis n'importe où dans le plugin, y compris les ressources partagées entre les compétences du plugin. Voir [les variables d'environnement du plugin](/docs/fr/plugins/manifest-reference#environment-variables). |

446| `${CLAUDE_PLUGIN_DATA}` | Le [répertoire de données persistantes](/docs/fr/plugins-reference#persistent-data-directory) du plugin, qui survit aux mises à jour du plugin. Substitué uniquement dans les compétences de plugin. Utilisez ceci pour référencer les dépendances installées, les fichiers générés ou les caches qui doivent survivre à une mise à jour. |446| `${CLAUDE_PLUGIN_DATA}` | Le [répertoire de données persistantes](/docs/fr/plugins/components#path-variables-and-persistent-data) du plugin, qui survit aux mises à jour du plugin. Substitué uniquement dans les compétences de plugin. Utilisez ceci pour référencer les dépendances installées, les fichiers générés ou les caches qui doivent survivre à une mise à jour. |

447 447 

448Claude Code substitue `${CLAUDE_SKILL_DIR}` et `${CLAUDE_PROJECT_DIR}` à deux endroits : le contenu markdown de la compétence et les règles Bash dans le frontmatter [`allowed-tools`](#frontmatter-reference). Dans une compétence de plugin, Claude Code substitue `${CLAUDE_PLUGIN_ROOT}` et `${CLAUDE_PLUGIN_DATA}` aux mêmes deux endroits. L'utilisation de la même variable aux deux endroits permet à une compétence d'exécuter un script fourni sans invite de permission. La compétence suivante montre le modèle :448Claude Code substitue `${CLAUDE_SKILL_DIR}` et `${CLAUDE_PROJECT_DIR}` à deux endroits : le contenu markdown de la compétence et les règles Bash dans le frontmatter [`allowed-tools`](#frontmatter-reference). Dans une compétence de plugin, Claude Code substitue `${CLAUDE_PLUGIN_ROOT}` et `${CLAUDE_PLUGIN_DATA}` aux mêmes deux endroits. L'utilisation de la même variable aux deux endroits permet à une compétence d'exécuter un script fourni sans invite de permission. La compétence suivante montre le modèle :

449 449 


892 892 

893La vérification des deux est une comparaison de base. Collectez quelques invites réalistes, exécutez chacune dans une session nouvelle avec la compétence disponible et à nouveau avec elle [désactivée](#override-skill-visibility-from-settings), et comparez les résultats. Une session nouvelle est importante car le contexte restant de la création de la compétence masquera les lacunes dans les instructions écrites.893La vérification des deux est une comparaison de base. Collectez quelques invites réalistes, exécutez chacune dans une session nouvelle avec la compétence disponible et à nouveau avec elle [désactivée](#override-skill-visibility-from-settings), et comparez les résultats. Une session nouvelle est importante car le contexte restant de la création de la compétence masquera les lacunes dans les instructions écrites.

894 894 

895Deux outils automatisent cette comparaison. Pour une compétence qui est livrée dans un [plugin](/docs/fr/plugins), [`claude plugin eval`](/docs/fr/plugin-evals) exécute chaque invite dans une session isolée avec et sans le plugin, la note avec des évaluateurs que vous définissez ou qu'il écrit pour vous, et quitte avec un code non-zéro en dessous d'un seuil afin que vous puissiez gater CI sur celui-ci. Pour itérer sur une seule compétence à l'intérieur d'une conversation Claude Code, le plugin skill-creator ci-dessous exécute une boucle similaire avec son propre format `evals/evals.json`. Les deux formats ne sont pas interchangeables.895Deux outils automatisent cette comparaison. Pour une compétence qui est livrée dans un [plugin](/docs/fr/plugins/overview), [`claude plugin eval`](/docs/fr/plugin-evals) exécute chaque invite dans une session isolée avec et sans le plugin, la note avec des évaluateurs que vous définissez ou qu'il écrit pour vous, et quitte avec un code non-zéro en dessous d'un seuil afin que vous puissiez gater CI sur celui-ci. Pour itérer sur une seule compétence à l'intérieur d'une conversation Claude Code, le plugin skill-creator ci-dessous exécute une boucle similaire avec son propre format `evals/evals.json`. Les deux formats ne sont pas interchangeables.

896 896 

897<h3 id="run-evals-with-skill-creator">897<h3 id="run-evals-with-skill-creator">

898 Exécuter des évaluations avec skill-creator898 Exécuter des évaluations avec skill-creator


907Si l'installation échoue, faites correspondre le message que Claude Code signale :907Si l'installation échoue, faites correspondre le message que Claude Code signale :

908 908 

909* `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.909* `Marketplace "claude-plugins-official" not found` : ajoutez la marketplace avec `/plugin marketplace add anthropics/claude-plugins-official`, puis réessayez l'installation.

910* Le plugin [n'est pas trouvé dans la marketplace](/docs/fr/discover-plugins#install-plugins) : vérifiez le nom du plugin.910* Le plugin [n'est pas trouvé dans la marketplace](/docs/fr/plugins/install#install-a-plugin) : vérifiez le nom du plugin.

911 911 

912Si le résumé d'installation signale `Run /reload-plugins to activate.`, Claude Code exécute ensuite ce rechargement pour vous. Si le rechargement vous avertit que votre prochain message relierait la conversation, exécutez `/reload-plugins --force` pour rendre les compétences du plugin disponibles dans la session actuelle. Ensuite, demandez à Claude d'évaluer une compétence existante, par exemple `evaluate my summarize-changes skill with skill-creator`. Le plugin vous guide à travers l'écriture de cas de test et exécute la boucle :912Si le résumé d'installation signale `Run /reload-plugins to activate.`, Claude Code exécute ensuite ce rechargement pour vous. Si le rechargement vous avertit que votre prochain message relierait la conversation, exécutez `/reload-plugins --force` pour rendre les compétences du plugin disponibles dans la session actuelle. Ensuite, demandez à Claude d'évaluer une compétence existante, par exemple `evaluate my summarize-changes skill with skill-creator`. Le plugin vous guide à travers l'écriture de cas de test et exécute la boucle :

913 913 


928Les compétences peuvent être distribuées à différentes portées selon votre audience :928Les compétences peuvent être distribuées à différentes portées selon votre audience :

929 929 

930* **Compétences de projet** : Validez `.claude/skills/` dans le contrôle de version930* **Compétences de projet** : Validez `.claude/skills/` dans le contrôle de version

931* **Plugins** : Créez un répertoire `skills/` dans votre [plugin](/docs/fr/plugins)931* **Plugins** : Créez un répertoire `skills/` dans votre [plugin](/docs/fr/plugins/overview)

932* **Gérées** : Déployez à l'échelle de l'organisation via les [paramètres gérés](/docs/fr/managed-settings)932* **Gérées** : Déployez à l'échelle de l'organisation via les [paramètres gérés](/docs/fr/managed-settings)

933 933 

934<h3 id="generate-visual-output">934<h3 id="generate-visual-output">


1143 1143 

1144Si la compétence est fournie dans un plugin, vous pouvez mesurer la fréquence à laquelle elle se déclenche sur des invites réalistes plutôt que de vérifier une par une : écrivez un cas d'évaluation avec un [évaluateur `tool_used: Skill`](/docs/fr/plugin-evals#create-your-first-eval-suite) et exécutez-le avec `claude plugin eval` après chaque modification de description.1144Si la compétence est fournie dans un plugin, vous pouvez mesurer la fréquence à laquelle elle se déclenche sur des invites réalistes plutôt que de vérifier une par une : écrivez un cas d'évaluation avec un [évaluateur `tool_used: Skill`](/docs/fr/plugin-evals#create-your-first-eval-suite) et exécutez-le avec `claude plugin eval` après chaque modification de description.

1145 1145 

1146Pour trouver les fichiers `SKILL.md` dont le frontmatter ne s'analyse pas, exécutez [`claude plugin validate`](/docs/fr/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) sur le répertoire des compétences, par exemple `claude plugin validate .claude/skills` pour les compétences du projet ou `claude plugin validate ~/.claude/skills` pour les compétences personnelles. Nécessite Claude Code v2.1.233 ou ultérieur.1146Pour trouver les fichiers `SKILL.md` dont le frontmatter ne s'analyse pas, exécutez [`claude plugin validate`](/docs/fr/plugins/cli-reference#validate-a-directory) sur le répertoire des compétences, par exemple `claude plugin validate .claude/skills` pour les compétences du projet ou `claude plugin validate ~/.claude/skills` pour les compétences personnelles. Nécessite Claude Code v2.1.233 ou ultérieur.

1147 1147 

1148<h3 id="skill-triggers-too-often">1148<h3 id="skill-triggers-too-often">

1149 La compétence se déclenche trop souvent1149 La compétence se déclenche trop souvent


1184* **[Évaluer la qualité de la sortie de la skill](https://agentskills.io/skill-creation/evaluating-skills)** : le format du fichier eval et le flux de travail d'itération sur agentskills.io1184* **[Évaluer la qualité de la sortie de la skill](https://agentskills.io/skill-creation/evaluating-skills)** : le format du fichier eval et le flux de travail d'itération sur agentskills.io

1185* **[Meilleures pratiques de création de skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices)** : conseils de rédaction qui s'appliquent à tous les produits Claude1185* **[Meilleures pratiques de création de skills](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices)** : conseils de rédaction qui s'appliquent à tous les produits Claude

1186* **[Subagents](/docs/fr/sub-agents)** : déléguer les tâches à des agents spécialisés1186* **[Subagents](/docs/fr/sub-agents)** : déléguer les tâches à des agents spécialisés

1187* **[Plugins](/docs/fr/plugins)** : empaqueter et distribuer les skills avec d'autres extensions1187* **[Plugins](/docs/fr/plugins/overview)** : empaqueter et distribuer les skills avec d'autres extensions

1188* **[Hooks](/docs/fr/hooks)** : automatiser les workflows autour des événements d'outils1188* **[Hooks](/docs/fr/hooks)** : automatiser les workflows autour des événements d'outils

1189* **[Memory](/docs/fr/memory)** : gérer les fichiers CLAUDE.md pour le contexte persistant1189* **[Memory](/docs/fr/memory)** : gérer les fichiers CLAUDE.md pour le contexte persistant

1190* **[Commands](/docs/fr/commands)** : référence pour les commandes intégrées et les skills groupées1190* **[Commands](/docs/fr/commands)** : référence pour les commandes intégrées et les skills groupées

statusline.md +1 −1

Details

1142 1142 

1143Écrivez une ligne JSON sur stdout par ligne que vous voulez remplacer, sous la forme `{"id": "<task id>", "content": "<row body>"}`. La chaîne `content` est rendue telle quelle, y compris les couleurs ANSI et les hyperliens OSC 8. Omettez le `id` d'une tâche pour conserver le rendu par défaut pour cette ligne ; émettez une chaîne `content` vide pour la masquer.1143Écrivez une ligne JSON sur stdout par ligne que vous voulez remplacer, sous la forme `{"id": "<task id>", "content": "<row body>"}`. La chaîne `content` est rendue telle quelle, y compris les couleurs ANSI et les hyperliens OSC 8. Omettez le `id` d'une tâche pour conserver le rendu par défaut pour cette ligne ; émettez une chaîne `content` vide pour la masquer.

1144 1144 

1145Les mêmes portes de confiance, `disableAllHooks` et [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) qui s'appliquent à `statusLine` s'appliquent ici. Les plugins peuvent expédier un `subagentStatusLine` par défaut dans leur [`settings.json`](/docs/fr/plugins-reference#standard-plugin-layout), mais contrairement aux hooks, les valeurs des plugins ne s'exécutent pas sous `allowManagedHooksOnly` même lorsque le plugin est forcé activé dans les paramètres gérés `enabledPlugins`.1145Les mêmes portes de confiance, `disableAllHooks` et [`allowManagedHooksOnly`](/docs/fr/settings-reference#allowmanagedhooksonly) qui s'appliquent à `statusLine` s'appliquent ici. Les plugins peuvent expédier un `subagentStatusLine` par défaut dans leur [`settings.json`](/docs/fr/plugins/manifest-reference#standard-layout), mais contrairement aux hooks, les valeurs des plugins ne s'exécutent pas sous `allowManagedHooksOnly` même lorsque le plugin est forcé activé dans les paramètres gérés `enabledPlugins`.

1146 1146 

1147<h2 id="tips">1147<h2 id="tips">

1148 Conseils1148 Conseils

sub-agents.md +18 −14

Details

174| Drapeau CLI `--agents` | Session actuelle | 2 | Passer JSON lors du lancement de Claude Code |174| Drapeau CLI `--agents` | Session actuelle | 2 | Passer JSON lors du lancement de Claude Code |

175| `.claude/agents/` | Projet actuel | 3 | Demander à Claude, ou créer le fichier manuellement |175| `.claude/agents/` | Projet actuel | 3 | Demander à Claude, ou créer le fichier manuellement |

176| `~/.claude/agents/` | Tous vos projets | 4 | Demander à Claude, ou créer le fichier manuellement |176| `~/.claude/agents/` | Tous vos projets | 4 | Demander à Claude, ou créer le fichier manuellement |

177| Répertoire `agents/` du plugin | Où le plugin est activé | 5 (la plus basse) | Installé avec les [plugins](/docs/fr/plugins) |177| Répertoire `agents/` du plugin | Où le plugin est activé | 5 (la plus basse) | Installé avec les [plugins](/docs/fr/plugins/overview) |

178 178 

179**Les sous-agents de projet** (`.claude/agents/`) sont idéaux pour les sous-agents spécifiques à une base de code. Enregistrez-les dans le contrôle de version pour que votre équipe puisse les utiliser et les améliorer de manière collaborative.179**Les sous-agents de projet** (`.claude/agents/`) sont idéaux pour les sous-agents spécifiques à une base de code. Enregistrez-les dans le contrôle de version pour que votre équipe puisse les utiliser et les améliorer de manière collaborative.

180 180 

181Les sous-agents de projet sont découverts en remontant à partir du répertoire de travail actuel, donc chaque `.claude/agents/` entre celui-ci et la racine du référentiel est analysé. À partir de la v2.1.178, lorsque plusieurs de ces répertoires imbriqués définissent le même `name`, Claude Code utilise la définition la plus proche du répertoire de travail.181Les sous-agents de projet sont découverts en remontant à partir du répertoire de travail actuel, donc chaque `.claude/agents/` entre celui-ci et la racine du référentiel est analysé. Lorsque plusieurs de ces répertoires imbriqués définissent le même `name`, Claude Code utilise la définition la plus proche du répertoire de travail.

182 182 

183Lorsque vous ajoutez un répertoire avec `--add-dir` ou `/add-dir`, Claude Code charge également son dossier `.claude/agents/`, aux côtés de vos sous-agents de projet. Consultez [Répertoires supplémentaires](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) pour voir quels autres types de configuration se chargent à partir de `--add-dir`. Pour partager les sous-agents entre les projets sans `--add-dir`, utilisez `~/.claude/agents/` ou un [plugin](/docs/fr/plugins).183Lorsque vous ajoutez un répertoire avec `--add-dir` ou `/add-dir`, Claude Code charge également son dossier `.claude/agents/`, aux côtés de vos sous-agents de projet. Consultez [Répertoires supplémentaires](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) pour voir quels autres types de configuration se chargent à partir de `--add-dir`. Pour partager les sous-agents entre les projets sans `--add-dir`, utilisez `~/.claude/agents/` ou un [plugin](/docs/fr/plugins/overview).

184 184 

185**Les sous-agents utilisateur** (`~/.claude/agents/`) sont des sous-agents personnels disponibles dans tous vos projets.185**Les sous-agents utilisateur** (`~/.claude/agents/`) sont des sous-agents personnels disponibles dans tous vos projets.

186 186 


238 238 

239**Les sous-agents gérés** sont déployés par les administrateurs de l'organisation. Placez les fichiers markdown dans `.claude/agents/` à l'intérieur du [répertoire des paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), en utilisant le même format de frontmatter que les sous-agents de projet et utilisateur. Les définitions gérées prennent précédence sur les sous-agents de projet et utilisateur portant le même nom.239**Les sous-agents gérés** sont déployés par les administrateurs de l'organisation. Placez les fichiers markdown dans `.claude/agents/` à l'intérieur du [répertoire des paramètres gérés](/docs/fr/managed-settings#delivery-mechanisms), en utilisant le même format de frontmatter que les sous-agents de projet et utilisateur. Les définitions gérées prennent précédence sur les sous-agents de projet et utilisateur portant le même nom.

240 240 

241**Les sous-agents de plugin** proviennent des [plugins](/docs/fr/plugins) que vous avez installés. Ils se chargent automatiquement aux côtés de vos sous-agents personnalisés et apparaissent dans la saisie semi-automatique @-mention sous leur nom limité. Consultez la [référence des composants de plugin](/docs/fr/plugins-reference#agents) pour plus de détails sur la création de sous-agents de plugin.241**Les sous-agents de plugin** proviennent des [plugins](/docs/fr/plugins/overview) que vous avez installés. Ils se chargent automatiquement aux côtés de vos sous-agents personnalisés et apparaissent dans la saisie semi-automatique @-mention sous leur nom limité. Consultez la [référence des composants de plugin](/docs/fr/plugins/components#agents) pour plus de détails sur la création de sous-agents de plugin.

242 242 

243<Note>243<Note>

244 Pour des raisons de sécurité, les sous-agents de plugin ne prennent pas en charge les champs frontmatter `hooks`, `mcpServers` ou `permissionMode`. Ces champs sont ignorés lors du chargement des agents à partir d'un plugin. Si vous en avez besoin, copiez le fichier d'agent dans `.claude/agents/` ou `~/.claude/agents/`. Vous pouvez également ajouter des règles à [`permissions.allow`](/docs/fr/settings-reference#permissions-allow) dans `settings.json` ou `settings.local.json`, mais ces règles s'appliquent à l'ensemble de la session, pas seulement au sous-agent du plugin.244 Pour des raisons de sécurité, les sous-agents de plugin ne prennent pas en charge les champs frontmatter `hooks`, `mcpServers` ou `permissionMode`. Ces champs sont ignorés lors du chargement des agents à partir d'un plugin. Si vous en avez besoin, copiez le fichier d'agent dans `.claude/agents/` ou `~/.claude/agents/`. Vous pouvez également ajouter des règles à [`permissions.allow`](/docs/fr/settings-reference#permissions-allow) dans `settings.json` ou `settings.local.json`, mais ces règles s'appliquent à l'ensemble de la session, pas seulement au sous-agent du plugin.


305 305 

306| Champ | Obligatoire | Description |306| Champ | Obligatoire | Description |

307| :---------------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |307| :---------------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

308| `name` | Oui | Identifiant unique, tel que `code-reviewer` ou `reviewer-v2`. Les [Hooks](/docs/fr/hooks#subagentstart) reçoivent cette valeur comme `agent_type`. Le nom du fichier n'a pas besoin de correspondre. Les noms ne peuvent pas contenir `:`, qui est réservé aux [identifiants limités au plugin](/docs/fr/plugins) tels que `my-plugin:reviewer`. Claude Code ne charge pas un fichier dont le nom en contient un et enregistre une erreur dans le journal de débogage. Avant la v2.1.218, de tels noms étaient acceptés |308| `name` | Oui | Identifiant unique, tel que `code-reviewer` ou `reviewer-v2`. Les [Hooks](/docs/fr/hooks#subagentstart) reçoivent cette valeur comme `agent_type`. Le nom du fichier n'a pas besoin de correspondre. Les noms ne peuvent pas contenir `:`, qui est réservé aux [identifiants limités au plugin](/docs/fr/plugins/overview) tels que `my-plugin:reviewer`. Claude Code ne charge pas un fichier dont le nom en contient un et enregistre une erreur dans le journal de débogage. Avant la v2.1.218, de tels noms étaient acceptés |

309| `description` | Oui | Quand Claude doit déléguer à ce sous-agent |309| `description` | Oui | Quand Claude doit déléguer à ce sous-agent |

310| `tools` | Non | [Outils](#available-tools) que le sous-agent peut utiliser, sous forme de chaîne séparée par des virgules telle que `Read, Grep, Bash` ou une liste YAML. Hérite de tous les outils disponibles pour les sous-agents s'il est omis. Si aucune entrée de la liste ne se résout en un outil, le sous-agent échoue généralement au [lancement](/docs/fr/errors#agent-would-be-spawned-with-zero-tools) avec une erreur nommant les entrées. Pour précharger les Skills dans le contexte, utilisez le champ `skills` plutôt que de lister `Skill` ici |310| `tools` | Non | [Outils](#available-tools) que le sous-agent peut utiliser, sous forme de chaîne séparée par des virgules telle que `Read, Grep, Bash` ou une liste YAML. Hérite de tous les outils disponibles pour les sous-agents s'il est omis. Si aucune entrée de la liste ne se résout en un outil, le sous-agent échoue généralement au [lancement](/docs/fr/errors#agent-would-be-spawned-with-zero-tools) avec une erreur nommant les entrées. Pour précharger les Skills dans le contexte, utilisez le champ `skills` plutôt que de lister `Skill` ici |

311| `disallowedTools` | Non | Outils à refuser, supprimés de la liste héritée ou spécifiée. Même format que `tools`. Une entrée avec un spécificateur, tel que `Bash(git push *)`, supprime toujours l'[outil entier](#available-tools) |311| `disallowedTools` | Non | Outils à refuser, supprimés de la liste héritée ou spécifiée. Même format que `tools`. Une entrée avec un spécificateur, tel que `Bash(git push *)`, supprime toujours l'[outil entier](#available-tools) |


349 349 

350Pour voir le journal de débogage, exécutez Claude Code avec `--debug`.350Pour voir le journal de débogage, exécutez Claude Code avec `--debug`.

351 351 

352Un [sous-agent de plugin](/docs/fr/plugins-reference#agents) dont le frontmatter n'a pas de `name` ou ne s'analyse pas se charge toujours, sous son nom de fichier.352Un [sous-agent de plugin](/docs/fr/plugins/components#agents) dont le frontmatter n'a pas de `name` ou ne s'analyse pas se charge toujours, sous son nom de fichier.

353 353 

354<h5 id="check-an-agents-directory-before-a-session">354<h5 id="check-an-agents-directory-before-a-session">

355 Vérifier un répertoire `agents` avant une session355 Vérifier un répertoire `agents` avant une session

356</h5>356</h5>

357 357 

358Pour trouver les fichiers dans un répertoire `agents` dont le frontmatter ne s'analyse pas, exécutez `claude plugin validate` contre le répertoire, par exemple `.claude/agents` ou `~/.claude/agents`. Claude Code vérifie uniquement [le répertoire que vous nommez](/docs/fr/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest), et ne signale pas un fichier dont le frontmatter s'analyse mais n'a pas de `name`. Nécessite Claude Code v2.1.233 ou ultérieur.358Pour trouver les fichiers dans un répertoire `agents` dont le frontmatter ne s'analyse pas, exécutez `claude plugin validate` contre le répertoire, par exemple `.claude/agents` ou `~/.claude/agents`. Claude Code vérifie uniquement [le répertoire que vous nommez](/docs/fr/plugins/cli-reference#validate-a-directory), et ne signale pas un fichier dont le frontmatter s'analyse mais n'a pas de `name`. Nécessite Claude Code v2.1.233 ou ultérieur.

359 359 

360<h3 id="choose-a-model">360<h3 id="choose-a-model">

361 Choisir un modèle361 Choisir un modèle


573* Un nom qui référence un serveur que vous avez déjà configuré573* Un nom qui référence un serveur que vous avez déjà configuré

574* Un serveur en ligne dans un fichier d'agent de `~/.claude/agents/`, dans un que vous passez avec `--agents` ou l'option `agents` du SDK, ou dans un que les paramètres gérés fournissent574* Un serveur en ligne dans un fichier d'agent de `~/.claude/agents/`, dans un que vous passez avec `--agents` ou l'option `agents` du SDK, ou dans un que les paramètres gérés fournissent

575 575 

576À partir de la v2.1.153, les restrictions MCP qui s'appliquent à la session principale couvrent également les serveurs déclarés dans le frontmatter du sous-agent :576Les restrictions MCP qui s'appliquent à la session principale couvrent également les serveurs déclarés dans le frontmatter du sous-agent :

577 577 

578* [`--strict-mcp-config`](/docs/fr/cli-reference) et [`--bare`](/docs/fr/cli-reference)578* [`--strict-mcp-config`](/docs/fr/cli-reference) et [`--bare`](/docs/fr/cli-reference)

579* [Configuration MCP gérée en entreprise](/docs/fr/managed-mcp)579* [Configuration MCP gérée en entreprise](/docs/fr/managed-mcp)


818| `SubagentStart` | Nom du type d'agent | Quand un sous-agent commence l'exécution |818| `SubagentStart` | Nom du type d'agent | Quand un sous-agent commence l'exécution |

819| `SubagentStop` | Nom du type d'agent | Quand un sous-agent se termine |819| `SubagentStop` | Nom du type d'agent | Quand un sous-agent se termine |

820 820 

821Les deux événements prennent en charge les matchers pour cibler des types d'agents spécifiques par nom. La valeur du matcher est le `name` du frontmatter de l'agent pour les sous-agents au niveau du projet et utilisateur, ou l'identifiant limité au plugin tel que `my-plugin:db-agent` pour les [sous-agents de plugin](/docs/fr/plugins). Un nom limité contient un deux-points, il est donc évalué comme une [expression régulière non ancrée](/docs/fr/hooks#matcher-patterns) ; ancrez-le avec `^` et `$`, comme dans `^my-plugin:db-agent$`, pour correspondre uniquement à cet agent.821Les deux événements prennent en charge les matchers pour cibler des types d'agents spécifiques par nom. La valeur du matcher est le `name` du frontmatter de l'agent pour les sous-agents au niveau du projet et utilisateur, ou l'identifiant limité au plugin tel que `my-plugin:db-agent` pour les [sous-agents de plugin](/docs/fr/plugins/components#agents). Un nom limité contient un deux-points, il est donc évalué comme une [expression régulière non ancrée](/docs/fr/hooks#matcher-patterns) ; ancrez-le avec `^` et `$`, comme dans `^my-plugin:db-agent$`, pour correspondre uniquement à cet agent.

822 822 

823Cet exemple exécute un script de configuration uniquement lorsque le sous-agent `db-agent` démarre, et un script de nettoyage lorsque n'importe quel sous-agent s'arrête :823Cet exemple exécute un script de configuration uniquement lorsque le sous-agent `db-agent` démarre, et un script de nettoyage lorsque n'importe quel sous-agent s'arrête :

824 824 


860 860 

861Gardez les descriptions brèves : Claude Code affiche un avertissement au démarrage lorsque les descriptions combinées de vos sous-agents dépassent [la limite de 15 000 tokens](/docs/fr/errors#agent-descriptions-are-over-the-15000-token-limit), et charge toujours chaque sous-agent.861Gardez les descriptions brèves : Claude Code affiche un avertissement au démarrage lorsque les descriptions combinées de vos sous-agents dépassent [la limite de 15 000 tokens](/docs/fr/errors#agent-descriptions-are-over-the-15000-token-limit), et charge toujours chaque sous-agent.

862 862 

863Si le sous-agent est fourni dans un [plugin](/docs/fr/plugins/overview), vous pouvez mesurer la fiabilité avec laquelle Claude le délègue sur des invites réalistes au lieu de vérifier une par une : [`claude plugin eval`](/docs/fr/plugin-evals) exécute chaque invite avec et sans le plugin et évalue les résultats.

864 

863<h3 id="invoke-subagents-explicitly">865<h3 id="invoke-subagents-explicitly">

864 Invoquer les sous-agents explicitement866 Invoquer les sous-agents explicitement

865</h3>867</h3>


885 887 

886Votre message complet va toujours à Claude, qui écrit l'invite de tâche du sous-agent en fonction de ce que vous avez demandé. La @-mention contrôle quel sous-agent Claude invoque, pas quelle invite il reçoit.888Votre message complet va toujours à Claude, qui écrit l'invite de tâche du sous-agent en fonction de ce que vous avez demandé. La @-mention contrôle quel sous-agent Claude invoque, pas quelle invite il reçoit.

887 889 

888Les sous-agents fournis par un [plugin](/docs/fr/plugins) activé apparaissent dans la saisie semi-automatique sous leur nom délimité, comme `my-plugin:code-reviewer` ou `my-plugin:review:security` lorsque le plugin [organise les agents dans des sous-dossiers](#choose-the-subagent-scope). Les sous-agents d'arrière-plan nommés actuellement en cours d'exécution dans la session apparaissent également dans la saisie semi-automatique, affichant leur statut à côté du nom.890Les sous-agents fournis par un [plugin](/docs/fr/plugins/overview) activé apparaissent dans la saisie semi-automatique sous leur nom délimité, comme `my-plugin:code-reviewer` ou `my-plugin:review:security` lorsque le plugin [organise les agents dans des sous-dossiers](#choose-the-subagent-scope). Les sous-agents d'arrière-plan nommés actuellement en cours d'exécution dans la session apparaissent également dans la saisie semi-automatique, affichant leur statut à côté du nom.

889 891 

890Vous pouvez également taper la mention manuellement sans utiliser le sélecteur : `@agent-<name>` pour les sous-agents locaux, ou `@agent-` suivi du nom délimité pour les sous-agents de plugin, par exemple `@agent-my-plugin:code-reviewer`. Pendant que vous tapez cette forme, la saisie semi-automatique affiche les correspondances de fichiers plutôt que les agents. La mention d'agent se résout toujours lorsque vous soumettez.892Vous pouvez également taper la mention manuellement sans utiliser le sélecteur : `@agent-<name>` pour les sous-agents locaux, ou `@agent-` suivi du nom délimité pour les sous-agents de plugin, par exemple `@agent-my-plugin:code-reviewer`. Pendant que vous tapez cette forme, la saisie semi-automatique affiche les correspondances de fichiers plutôt que les agents. La mention d'agent se résout toujours lorsque vous soumettez.

891 893 


895claude --agent code-reviewer897claude --agent code-reviewer

896```898```

897 899 

898L'invite système du sous-agent remplace complètement l'invite système par défaut de Claude Code, de la même manière que [`--system-prompt`](/docs/fr/cli-reference) le fait. Les fichiers `CLAUDE.md` et la mémoire du projet se chargent toujours via le flux de messages normal, même lorsque la définition de l'agent définit [`omitClaudeMd`](#supported-frontmatter-fields). Le nom de l'agent apparaît comme `@<name>` dans l'en-tête de démarrage pour que vous puissiez confirmer qu'il est actif.900L'invite système du sous-agent remplace complètement l'invite système par défaut de Claude Code, de la même manière que [`--system-prompt`](/docs/fr/cli-reference) le fait. Les fichiers `CLAUDE.md` et la mémoire du projet se chargent toujours via le flux de messages normal, même lorsque la définition de l'agent définit [`omitClaudeMd`](#supported-frontmatter-fields).

901 

902Le nom de l'agent apparaît comme `@<name>` dans l'en-tête de démarrage pour que vous puissiez confirmer qu'il est actif.

899 903 

900Cela fonctionne avec les sous-agents intégrés et personnalisés, et le choix persiste lorsque vous reprenez la session : Claude Code restaure les restrictions d'outils et le modèle de l'agent ainsi que la conversation. Si l'agent n'existe plus lorsque vous reprenez, la session continue avec les outils par défaut et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available). Pour l'invite système dans l'un ou l'autre cas, voir [Drapeaux d'invite système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations).904Cela fonctionne avec les sous-agents intégrés et personnalisés, et le choix persiste lorsque vous reprenez la session : Claude Code restaure les restrictions d'outils et le modèle de l'agent ainsi que la conversation. Si l'agent n'existe plus lorsque vous reprenez, la session continue avec les outils par défaut et affiche un [avertissement nommant l'agent](/docs/fr/errors#session-agent-no-longer-available). Pour l'invite système dans l'un ou l'autre cas, voir [Drapeaux d'invite système dans les conversations reprises](/docs/fr/cli-reference#system-prompt-flags-in-resumed-conversations).

901 905 


930Les sous-agents peuvent s'exécuter au premier plan ou en arrière-plan :934Les sous-agents peuvent s'exécuter au premier plan ou en arrière-plan :

931 935 

932* **Les sous-agents au premier plan** bloquent la conversation principale jusqu'à la fin. Les invites de permission vous sont transmises au fur et à mesure qu'elles se produisent.936* **Les sous-agents au premier plan** bloquent la conversation principale jusqu'à la fin. Les invites de permission vous sont transmises au fur et à mesure qu'elles se produisent.

933* **Les sous-agents en arrière-plan** s'exécutent simultanément pendant que vous continuez à travailler. Lorsqu'un sous-agent en arrière-plan atteint un appel d'outil qui nécessite une permission, Claude Code affiche l'invite dans votre session principale et nomme le sous-agent qui demande. Approuvez pour laisser le sous-agent continuer, ou appuyez sur Échap pour refuser cet appel d'outil sans arrêter le sous-agent. Avant la v2.1.186, les sous-agents en arrière-plan refusaient automatiquement tout appel d'outil qui aurait demandé une permission.937* **Les sous-agents en arrière-plan** s'exécutent simultanément pendant que vous continuez à travailler. Lorsqu'un sous-agent en arrière-plan atteint un appel d'outil qui nécessite une permission, Claude Code affiche l'invite dans votre session principale et nomme le sous-agent qui demande. Approuvez pour laisser le sous-agent continuer, ou appuyez sur Échap pour refuser cet appel d'outil sans arrêter le sous-agent.

934 938 

935Pour chaque sous-agent que Claude génère avec l'outil Agent, Claude Code choisit le premier plan ou l'arrière-plan parmi les premiers cas qui s'appliquent :939Pour chaque sous-agent que Claude génère avec l'outil Agent, Claude Code choisit le premier plan ou l'arrière-plan parmi les premiers cas qui s'appliquent :

936 940 


1173 1177 

1174Un sous-agent que vous avez arrêté vous-même, avec `x` dans `/tasks` ou une demande SDK `stop_task`, ne se reprend pas automatiquement. Si Claude lui envoie un message, le message est refusé et Claude est informé que l'agent a été annulé.1178Un sous-agent que vous avez arrêté vous-même, avec `x` dans `/tasks` ou une demande SDK `stop_task`, ne se reprend pas automatiquement. Si Claude lui envoie un message, le message est refusé et Claude est informé que l'agent a été annulé.

1175 1179 

1176Pendant que [la ligne de ce sous-agent est toujours dans le panneau de sous-agent](#run-subagents-in-foreground-or-background), tapez dans sa transcription pour le reprendre vous-même. Après cela, un message de Claude peut le reprendre automatiquement à nouveau. Nécessite Claude Code v2.1.191 ou ultérieur.1180Pendant que [la ligne de ce sous-agent est toujours dans le panneau de sous-agent](#run-subagents-in-foreground-or-background), tapez dans sa transcription pour le reprendre vous-même. Après cela, un message de Claude peut le reprendre automatiquement à nouveau.

1177 1181 

1178Reprendre démarre une nouvelle exécution de l'agent sous le même ID, de sorte qu'un sous-agent qui avait déjà échoué ou s'était terminé s'affiche à nouveau comme en cours d'exécution dans la liste des tâches et dans les événements de tâche du SDK Agent. Avant la v2.1.205, il continuait à afficher son statut antérieur échoué ou terminé pendant que l'exécution reprise fonctionnait.1182Reprendre démarre une nouvelle exécution de l'agent sous le même ID, de sorte qu'un sous-agent qui avait déjà échoué ou s'était terminé s'affiche à nouveau comme en cours d'exécution dans la liste des tâches et dans les événements de tâche du SDK Agent. Avant la v2.1.205, il continuait à afficher son statut antérieur échoué ou terminé pendant que l'exécution reprise fonctionnait.

1179 1183 


1491 1495 

1492Maintenant que vous comprenez les sous-agents, explorez ces fonctionnalités connexes :1496Maintenant que vous comprenez les sous-agents, explorez ces fonctionnalités connexes :

1493 1497 

1494* [Distribuer les sous-agents avec les plugins](/docs/fr/plugins) pour partager les sous-agents entre les équipes ou les projets1498* [Distribuer les sous-agents avec les plugins](/docs/fr/plugins/components#agents) pour partager les sous-agents entre les équipes ou les projets

1495* [Exécuter Claude Code par programmation](/docs/fr/headless) avec le SDK Agent pour CI/CD et l'automatisation1499* [Exécuter Claude Code par programmation](/docs/fr/headless) avec le SDK Agent pour CI/CD et l'automatisation

1496* [Utiliser les serveurs MCP](/docs/fr/mcp) pour donner aux sous-agents l'accès aux outils et données externes1500* [Utiliser les serveurs MCP](/docs/fr/mcp) pour donner aux sous-agents l'accès aux outils et données externes

Details

156 Créer un thème personnalisé156 Créer un thème personnalisé

157</h3>157</h3>

158 158 

159En plus des présets intégrés, `/theme` répertorie tous les thèmes personnalisés que vous avez définis et tous les thèmes contribués par les [plugins](/docs/fr/plugins-reference#themes) installés. Sélectionnez **Nouveau thème personnalisé…** à la fin de la liste pour en créer un de manière interactive : vous nommez le thème, puis choisissez les jetons de couleur individuels à remplacer. Appuyez sur `Ctrl+E` tandis qu'un thème personnalisé est en surbrillance pour le modifier.159En plus des présets intégrés, `/theme` répertorie tous les thèmes personnalisés que vous avez définis et tous les thèmes contribués par les [plugins](/docs/fr/plugins/components#themes-and-output-styles) installés. Sélectionnez **Nouveau thème personnalisé…** à la fin de la liste pour en créer un de manière interactive : vous nommez le thème, puis choisissez les jetons de couleur individuels à remplacer. Appuyez sur `Ctrl+E` tandis qu'un thème personnalisé est en surbrillance pour le modifier.

160 160 

161Chaque thème personnalisé est un fichier JSON dans `~/.claude/themes/`. Le nom de fichier sans l'extension `.json` est le slug du thème, et la sélection du thème stocke `custom:<slug>` comme votre préférence de thème. Le fichier a trois champs optionnels :161Chaque thème personnalisé est un fichier JSON dans `~/.claude/themes/`. Le nom de fichier sans l'extension `.json` est le slug du thème, et la sélection du thème stocke `custom:<slug>` comme votre préférence de thème. Le fichier a trois champs optionnels :

162 162 

Details

179Claude Code diffuse la sortie d'une commande vers un fichier de travail au fur et à mesure que la commande s'exécute ; une commande dont la sortie dépasse 5 Go est arrêtée. Quand la commande se termine, Claude Code relit la sortie à partir de ce fichier, jusqu'à la fenêtre de relecture décrite ci-dessous. La quantité de sortie qui atteint Claude en ligne dépend de la façon dont Claude Code traite le résultat comme un échec :179Claude Code diffuse la sortie d'une commande vers un fichier de travail au fur et à mesure que la commande s'exécute ; une commande dont la sortie dépasse 5 Go est arrêtée. Quand la commande se termine, Claude Code relit la sortie à partir de ce fichier, jusqu'à la fenêtre de relecture décrite ci-dessous. La quantité de sortie qui atteint Claude en ligne dépend de la façon dont Claude Code traite le résultat comme un échec :

180 180 

181| Résultat | Ce que Claude obtient |181| Résultat | Ce que Claude obtient |

182| :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |182| :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

183| Valide | En ligne jusqu'à environ 30 000 caractères par défaut ; au-delà, le chemin d'un fichier enregistré dans le répertoire de session et tronqué au-delà de 64 Mio, plus un court aperçu du début, et Claude lit ou recherche le fichier quand il a besoin du reste |183| Valide | En ligne jusqu'à environ 30 000 caractères par défaut ; au-delà, le chemin d'un fichier enregistré dans le répertoire de session et tronqué au-delà de 64 Mio, plus un aperçu des 2 000 premiers caractères au maximum, et Claude lit ou recherche le fichier quand il a besoin du reste |

184| Échec | En ligne jusqu'à environ 10 000 caractères ; au-delà, un extrait début-fin de cette taille coupé de la fenêtre de relecture, sans chemin de fichier |184| Échec | En ligne jusqu'à environ 10 000 caractères ; au-delà, un extrait début-fin de cette taille coupé de la fenêtre de relecture, sans chemin de fichier |

185 185 

186Une commande qui se termine avec le code 1 compte comme un résultat valide pour l'outil Bash uniquement quand Claude Code reconnaît le code de sortie 1 comme un résultat bénin pour cette commande : `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, et `[`, plus `git diff` et `git grep`. Toute autre commande qui se termine avec le code 1 compte comme un échec, même quand le code 1 est un résultat informatif bénin : pas de correspondances pour `pgrep` et `jq -e`, fichiers qui diffèrent pour `cmp`.186Une commande qui se termine avec le code 1 compte comme un résultat valide pour l'outil Bash uniquement quand Claude Code reconnaît le code de sortie 1 comme un résultat bénin pour cette commande : `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, et `[`, plus `git diff` et `git grep`. Toute autre commande qui se termine avec le code 1 compte comme un échec, même quand le code 1 est un résultat informatif bénin : pas de correspondances pour `pgrep` et `jq -e`, fichiers qui diffèrent pour `cmp`.


221* `mcp`: serveurs [MCP](/docs/fr/mcp) locaux221* `mcp`: serveurs [MCP](/docs/fr/mcp) locaux

222* `lsp`: [serveurs de langage](#lsp-tool-behavior)222* `lsp`: [serveurs de langage](#lsp-tool-behavior)

223* `hooks`: commandes [hook](/docs/fr/hooks)223* `hooks`: commandes [hook](/docs/fr/hooks)

224* `plugin`: commandes que les [plugins](/docs/fr/plugins) exécutent224* `plugin` : commandes que les [plugins](/docs/fr/plugins/overview) exécutent

225* `helper`: les propres commandes d'assistance de Claude Code, telles que `git`225* `helper`: les propres commandes d'assistance de Claude Code, telles que `git`

226* `agent`: processus Claude Code enfants, tels que [les coéquipiers agents](/docs/fr/agent-teams)226* `agent`: processus Claude Code enfants, tels que [les coéquipiers agents](/docs/fr/agent-teams)

227 227 


344* Trouver les implémentations d'une interface344* Trouver les implémentations d'une interface

345* Tracer les hiérarchies d'appels345* Tracer les hiérarchies d'appels

346 346 

347Claude Code maintient l'outil inactif jusqu'à ce que vous installiez un [plugin d'intelligence du code](/docs/fr/discover-plugins#code-intelligence) pour votre langage. Dans les [sessions cloud](/docs/fr/claude-code-on-the-web), Claude Code ne démarre pas les serveurs de langage du plugin, donc l'outil LSP reste inactif là. Claude Code prend la configuration du serveur de langage à partir du plugin, et vous installez le binaire du serveur vous-même.347Claude Code maintient l'outil inactif jusqu'à ce que vous installiez un [plugin d'intelligence du code](/docs/fr/plugins/code-intelligence) pour votre langage. Dans les [sessions cloud](/docs/fr/claude-code-on-the-web), Claude Code ne démarre pas les serveurs de langage du plugin, donc l'outil LSP reste inactif là. Claude Code prend la configuration du serveur de langage à partir du plugin, et vous installez le binaire du serveur vous-même.

348 348 

349Claude Code retourne un résultat d'erreur pour chaque appel LSP sur un fichier dont il ne peut pas démarrer le serveur de langage.349Claude Code retourne un résultat d'erreur pour chaque appel LSP sur un fichier dont il ne peut pas démarrer le serveur de langage.

350 350 


376 376 

377L'outil n'est pas disponible sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry. Il n'est également pas disponible quand `DISABLE_TELEMETRY` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini.377L'outil n'est pas disponible sur Amazon Bedrock, Google Cloud's Agent Platform, ou Microsoft Foundry. Il n'est également pas disponible quand `DISABLE_TELEMETRY` ou `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` est défini.

378 378 

379Les plugins peuvent déclarer des moniteurs qui démarrent automatiquement quand le plugin est actif, au lieu de demander à Claude de les démarrer. Voir [moniteurs de plugin](/docs/fr/plugins-reference#monitors).379Les plugins peuvent déclarer des moniteurs qui démarrent automatiquement quand le plugin est actif, au lieu de demander à Claude de les démarrer. Voir [moniteurs de plugin](/docs/fr/plugins/components#monitors).

380 380 

381<h3 id="websocket-source">381<h3 id="websocket-source">

382 Source WebSocket382 Source WebSocket

vs-code.md +2 −2

Details

331 Gérer les plugins331 Gérer les plugins

332</h2>332</h2>

333 333 

334L'extension VS Code inclut une interface graphique pour installer et gérer les [plugins](/docs/fr/plugins). Tapez `/plugins` dans la zone de saisie pour ouvrir l'interface **Gérer les plugins**.334L'extension VS Code inclut une interface graphique pour installer et gérer les [plugins](/docs/fr/plugins/overview). Tapez `/plugins` dans la zone de saisie pour ouvrir l'interface **Gérer les plugins**.

335 335 

336<h3 id="install-plugins">336<h3 id="install-plugins">

337 Installer les plugins337 Installer les plugins


394 La gestion des plugins dans VS Code utilise les mêmes commandes CLI en arrière-plan. Les plugins et les marketplaces que vous configurez dans l'extension sont également disponibles dans la CLI, et vice versa.394 La gestion des plugins dans VS Code utilise les mêmes commandes CLI en arrière-plan. Les plugins et les marketplaces que vous configurez dans l'extension sont également disponibles dans la CLI, et vice versa.

395</Note>395</Note>

396 396 

397Pour en savoir plus sur le système de plugins, consultez [Plugins](/docs/fr/plugins) et [Plugin marketplaces](/docs/fr/plugin-marketplaces).397Pour en savoir plus sur le système de plugins, consultez [Plugins](/docs/fr/plugins/overview) et [Plugin marketplaces](/docs/fr/plugins/overview).

398 398 

399<h2 id="automate-browser-tasks-with-chrome">399<h2 id="automate-browser-tasks-with-chrome">

400 Automatiser les tâches du navigateur avec Chrome400 Automatiser les tâches du navigateur avec Chrome

Details

116 └── my-tool116 └── my-tool

117 ```117 ```

118 118 

119 <a className="digest-feature-link" href="/docs/fr/plugins-reference#file-locations-reference">Référence des plugins</a>119 <a className="digest-feature-link" href="/docs/fr/plugins/manifest-reference#standard-layout">Référence des plugins</a>

120</div>120</div>

121 121 

122<div className="digest-wins">122<div className="digest-wins">

Details

104 <div>Les builds natifs macOS et Linux remplacent les outils <code>Glob</code> et <code>Grep</code> par <code>bfs</code> et <code>ugrep</code> intégrés disponibles via Bash, pour des recherches plus rapides sans un aller-retour d'outil séparé</div>104 <div>Les builds natifs macOS et Linux remplacent les outils <code>Glob</code> et <code>Grep</code> par <code>bfs</code> et <code>ugrep</code> intégrés disponibles via Bash, pour des recherches plus rapides sans un aller-retour d'outil séparé</div>

105 <div><code>--from-pr</code> accepte maintenant les URL de demande de fusion GitLab, de demande de tirage Bitbucket et de PR GitHub Enterprise en plus de github.com</div>105 <div><code>--from-pr</code> accepte maintenant les URL de demande de fusion GitLab, de demande de tirage Bitbucket et de PR GitHub Enterprise en plus de github.com</div>

106 <div>Mode Auto : incluez <code>"\$defaults"</code> dans <a href="/docs/fr/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code>, ou <code>environment</code></a> pour ajouter des règles personnalisées à côté de la liste intégrée au lieu de la remplacer</div>106 <div>Mode Auto : incluez <code>"\$defaults"</code> dans <a href="/docs/fr/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code>, ou <code>environment</code></a> pour ajouter des règles personnalisées à côté de la liste intégrée au lieu de la remplacer</div>

107 <div>La nouvelle commande <a href="/docs/fr/plugin-dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> crée des balises git de version pour les plugins avec validation de version</div>107 <div>La nouvelle commande <a href="/docs/fr/plugins/dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> crée des balises git de version pour les plugins avec validation de version</div>

108 <div>Les sessions Opus 4.7 calculent maintenant par rapport à la fenêtre de contexte native de 1M du modèle, corrigeant les pourcentages <code>/context</code> gonflés et la compaction automatique prématurée</div>108 <div>Les sessions Opus 4.7 calculent maintenant par rapport à la fenêtre de contexte native de 1M du modèle, corrigeant les pourcentages <code>/context</code> gonflés et la compaction automatique prématurée</div>

109 <div><code>/resume</code> sur les grandes sessions est jusqu'à 67 % plus rapide et offre maintenant de résumer les sessions anciennes et volumineuses avant de les relire</div>109 <div><code>/resume</code> sur les grandes sessions est jusqu'à 67 % plus rapide et offre maintenant de résumer les sessions anciennes et volumineuses avant de les relire</div>

110 </div>110 </div>

Details

24 claude --plugin-url https://example.com/my-plugin.zip24 claude --plugin-url https://example.com/my-plugin.zip

25 ```25 ```

26 26 

27 <a className="digest-feature-link" href="/docs/fr/plugins">Guide des plugins</a>27 <a className="digest-feature-link" href="/docs/fr/plugins/overview">Guide des plugins</a>

28</div>28</div>

29 29 

30<div className="digest-feature">30<div className="digest-feature">

Details

59 > /plugin list --enabled59 > /plugin list --enabled

60 ```60 ```

61 61 

62 <a className="digest-feature-link" href="/docs/fr/plugins-reference#plugin-list">Commandes de plugins</a>62 <a className="digest-feature-link" href="/docs/fr/plugins/cli-reference#plugin-list">Commandes de plugins</a>

63</div>63</div>

64 64 

65<div className="digest-feature">65<div className="digest-feature">

Details

86 <div className="digest-wins-grid">86 <div className="digest-wins-grid">

87 <div>L'extension VS Code obtient la <a href="/docs/fr/vs-code#extension-settings">vue Focus</a>, qui masque l'activité des outils derrière une ligne extensible par tour ; basculez-la depuis le menu de commande ou avec <code>Ctrl+Alt+F</code> (<code>Ctrl+Option+F</code> sur Mac)</div>87 <div>L'extension VS Code obtient la <a href="/docs/fr/vs-code#extension-settings">vue Focus</a>, qui masque l'activité des outils derrière une ligne extensible par tour ; basculez-la depuis le menu de commande ou avec <code>Ctrl+Alt+F</code> (<code>Ctrl+Option+F</code> sur Mac)</div>

88 <div>Les fichiers de credentials du sandbox acceptent <a href="/docs/fr/sandboxing#mask-credential-files"><code>mode: "mask"</code></a> sur Linux et WSL2, de sorte que les commandes en sandbox lisent une copie sentinelle tandis que le proxy sandbox substitue la valeur réelle à la sortie ; le masquage des credentials gagne également les options <code>extract</code>, <code>decode</code> conscient de JWT, et la re-signature AWS SigV4</div>88 <div>Les fichiers de credentials du sandbox acceptent <a href="/docs/fr/sandboxing#mask-credential-files"><code>mode: "mask"</code></a> sur Linux et WSL2, de sorte que les commandes en sandbox lisent une copie sentinelle tandis que le proxy sandbox substitue la valeur réelle à la sortie ; le masquage des credentials gagne également les options <code>extract</code>, <code>decode</code> conscient de JWT, et la re-signature AWS SigV4</div>

89 <div>Les marketplaces peuvent distribuer un plugin en tant qu'<a href="/docs/fr/plugin-marketplaces#zip-archives">archive zip</a> avec la nouvelle source <code>archive</code>, téléchargée via HTTPS avec une épingle SHA-256 optionnelle, de sorte que les installations fonctionnent sans git ou npm</div>89 <div>Les marketplaces peuvent distribuer un plugin en tant qu'<a href="/docs/fr/plugins/marketplace-reference#archive-plugin-source">archive zip</a> avec la nouvelle source <code>archive</code>, téléchargée via HTTPS avec une épingle SHA-256 optionnelle, de sorte que les installations fonctionnent sans git ou npm</div>

90 <div><code>/review</code> est maintenant un alias de <a href="/docs/fr/code-review#review-a-diff-locally"><code>/code-review</code></a>, et <code>/code-review</code> sans niveau d'effort réutilise le niveau que vous avez tapé en dernier</div>90 <div><code>/review</code> est maintenant un alias de <a href="/docs/fr/code-review#review-a-diff-locally"><code>/code-review</code></a>, et <code>/code-review</code> sans niveau d'effort réutilise le niveau que vous avez tapé en dernier</div>

91 <div>Une session que vous copiez avec <a href="/docs/fr/agent-view#copy-the-session-with-%2Ffork"><code>/fork</code></a> effectue maintenant ses modifications de code dans un worktree qui lui est propre au lieu du checkout de la session d'origine</div>91 <div>Une session que vous copiez avec <a href="/docs/fr/agent-view#copy-the-session-with-%2Ffork"><code>/fork</code></a> effectue maintenant ses modifications de code dans un worktree qui lui est propre au lieu du checkout de la session d'origine</div>

92 <div>Les plugins que vous installez depuis <a href="/docs/fr/discover-plugins#install-plugins"><code>/plugin</code></a> s'activent dans la session actuelle quand c'est sûr de le faire ; le résumé d'installation rapporte <code>Plugin is now active.</code> ou vous dit d'exécuter <code>/reload-plugins</code></div>92 <div>Les plugins que vous installez depuis <a href="/docs/fr/plugins/install#install-a-plugin"><code>/plugin</code></a> s'activent dans la session actuelle quand c'est sûr de le faire ; le résumé d'installation rapporte <code>Plugin is now active.</code> ou vous dit d'exécuter <code>/reload-plugins</code></div>

93 <div>Les <a href="/docs/fr/agent-view#how-file-edits-are-isolated">sessions en arrière-plan</a> qui ont modifié le code dans un worktree effectuent maintenant un commit et un push avant de terminer, ouvrent une demande de tirage en brouillon uniquement quand la tâche l'exige, et suivent les instructions git dans votre <code>CLAUDE.md</code></div>93 <div>Les <a href="/docs/fr/agent-view#how-file-edits-are-isolated">sessions en arrière-plan</a> qui ont modifié le code dans un worktree effectuent maintenant un commit et un push avant de terminer, ouvrent une demande de tirage en brouillon uniquement quand la tâche l'exige, et suivent les instructions git dans votre <code>CLAUDE.md</code></div>

94 <div>La limite de 200 sous-agents par session est supprimée, de sorte que les sessions longues n'refusent plus les nouveaux sous-agents ; les limites de <a href="/docs/fr/sub-agents#concurrent-subagent-limit">concurrence</a> et de profondeur s'appliquent toujours</div>94 <div>La limite de 200 sous-agents par session est supprimée, de sorte que les sessions longues n'refusent plus les nouveaux sous-agents ; les limites de <a href="/docs/fr/sub-agents#concurrent-subagent-limit">concurrence</a> et de profondeur s'appliquent toujours</div>

95 <div>Les paramètres enregistrés d'un référentiel ne peuvent plus activer la <a href="/docs/fr/remote-control#enable-remote-control-for-all-sessions">connexion automatique du contrôle à distance</a> ; définissez <code>remoteControlAtStartup</code> dans vos paramètres utilisateur ou gérés à la place, et les paramètres de projet et locaux ne peuvent que la désactiver</div>95 <div>Les paramètres enregistrés d'un référentiel ne peuvent plus activer la <a href="/docs/fr/remote-control#enable-remote-control-for-all-sessions">connexion automatique du contrôle à distance</a> ; définissez <code>remoteControlAtStartup</code> dans vos paramètres utilisateur ou gérés à la place, et les paramètres de projet et locaux ne peuvent que la désactiver</div>

Details

72 <div className="digest-wins-grid">72 <div className="digest-wins-grid">

73 <div>Tapez <code>@</code> dans le prompt pour <a href="/docs/fr/cross-session-messaging#message-another-session">mentionner une autre session Claude</a> par nom, et Claude la message directement avec <code>SendMessage</code> ; un nom simple qui correspond exactement à une session active se livre maintenant sans étape de confirmation</div>73 <div>Tapez <code>@</code> dans le prompt pour <a href="/docs/fr/cross-session-messaging#message-another-session">mentionner une autre session Claude</a> par nom, et Claude la message directement avec <code>SendMessage</code> ; un nom simple qui correspond exactement à une session active se livre maintenant sans étape de confirmation</div>

74 <div>Les sessions interactives sur une machine conservent des <a href="/docs/fr/cross-session-messaging#see-which-sessions-claude-can-reach">noms uniques</a> : si vous démarrez ou renommez une session avec un nom qu'une autre session active utilise déjà, Claude Code vous en donne une variante <code>name-word-word</code> et vous le dit</div>74 <div>Les sessions interactives sur une machine conservent des <a href="/docs/fr/cross-session-messaging#see-which-sessions-claude-can-reach">noms uniques</a> : si vous démarrez ou renommez une session avec un nom qu'une autre session active utilise déjà, Claude Code vous en donne une variante <code>name-word-word</code> et vous le dit</div>

75 <div>Les marketplaces de plugins acceptent les <a href="/docs/fr/plugin-marketplaces#command-sources">sources <code>command</code></a> : une commande locale imprime le répertoire du plugin, que Claude Code ré-résout chaque session et applique sans redémarrage</div>75 <div>Les marketplaces de plugins acceptent les <a href="/docs/fr/plugins/marketplace-reference#command-plugin-source">sources <code>command</code></a> : une commande locale imprime le répertoire du plugin, que Claude Code ré-résout chaque session et applique sans redémarrage</div>

76 <div>Sur Linux et WSL, définissez <a href="/docs/fr/tools-reference#memory-limit-on-linux-and-wsl"><code>CLAUDE\_CODE\_TOOL\_MEMORY\_LIMIT</code></a> sur une taille telle que <code>4G</code> pour limiter la mémoire que les commandes des outils Bash et PowerShell peuvent utiliser</div>76 <div>Sur Linux et WSL, définissez <a href="/docs/fr/tools-reference#memory-limit-on-linux-and-wsl"><code>CLAUDE\_CODE\_TOOL\_MEMORY\_LIMIT</code></a> sur une taille telle que <code>4G</code> pour limiter la mémoire que les commandes des outils Bash et PowerShell peuvent utiliser</div>

77 <div>Les outils de suivi des tâches, tels que <code>TaskCreate</code>, <code>TaskUpdate</code> et <code>TodoWrite</code>, ne sont <a href="/docs/fr/tools-reference#task-tool-availability">plus disponibles sur Opus 4.8, Sonnet 5, Fable 5, Mythos 5 et les modèles ultérieurs de ces familles</a> ; définissez <code>CLAUDE\_CODE\_ENABLE\_TODO\_TOOLS=1</code> pour les réactiver</div>77 <div>Les outils de suivi des tâches, tels que <code>TaskCreate</code>, <code>TaskUpdate</code> et <code>TodoWrite</code>, ne sont <a href="/docs/fr/tools-reference#task-tool-availability">plus disponibles sur Opus 4.8, Sonnet 5, Fable 5, Mythos 5 et les modèles ultérieurs de ces familles</a> ; définissez <code>CLAUDE\_CODE\_ENABLE\_TODO\_TOOLS=1</code> pour les réactiver</div>

78 <div><a href="/docs/fr/code-review#review-a-diff-locally"><code>/code-review</code></a> aux niveaux d'effort élevé, très élevé et maximum s'exécute désormais dans un agent en arrière-plan comme les autres niveaux</div>78 <div><a href="/docs/fr/code-review#review-a-diff-locally"><code>/code-review</code></a> aux niveaux d'effort élevé, très élevé et maximum s'exécute désormais dans un agent en arrière-plan comme les autres niveaux</div>

79 <div><a href="/docs/fr/discover-plugins#install-plugins"><code>/plugin install plugin\@marketplace</code></a> actualise d'abord la marketplace, de sorte que les plugins nouvellement publiés s'installent sans mise à jour manuelle de la marketplace</div>79 <div><a href="/docs/fr/plugins/install#install-a-plugin"><code>/plugin install plugin\@marketplace</code></a> actualise d'abord la marketplace, de sorte que les plugins nouvellement publiés s'installent sans mise à jour manuelle de la marketplace</div>

80 <div>Les paramètres acceptent <a href="/docs/fr/settings-reference#marketplace-key-aliases"><code>additionalMarketplaces</code> et <code>allowedMarketplaces</code></a> comme alias pour <code>extraKnownMarketplaces</code> et <code>strictKnownMarketplaces</code></div>80 <div>Les paramètres acceptent <a href="/docs/fr/settings-reference#marketplace-key-aliases"><code>additionalMarketplaces</code> et <code>allowedMarketplaces</code></a> comme alias pour <code>extraKnownMarketplaces</code> et <code>strictKnownMarketplaces</code></div>

81 <div>Sur les modèles plus récents, Claude peut <a href="/docs/fr/tools-reference#write-tool-behavior">remplacer un fichier existant avec l'outil Write</a> sans le lire d'abord cette session, ce qui correspond aux règles de l'outil Edit ; les modèles plus anciens nécessitent la lecture</div>81 <div>Sur les modèles plus récents, Claude peut <a href="/docs/fr/tools-reference#write-tool-behavior">remplacer un fichier existant avec l'outil Write</a> sans le lire d'abord cette session, ce qui correspond aux règles de l'outil Edit ; les modèles plus anciens nécessitent la lecture</div>

82 <div>L'extension VS Code peut <a href="/docs/fr/vs-code#organize-sessions-into-groups">organiser la liste des sessions en groupes</a> : cliquez avec le bouton droit pour créer, renommer ou supprimer un groupe, et Cmd/Ctrl- ou Maj-cliquez pour déplacer plusieurs sessions à la fois</div>82 <div>L'extension VS Code peut <a href="/docs/fr/vs-code#organize-sessions-into-groups">organiser la liste des sessions en groupes</a> : cliquez avec le bouton droit pour créer, renommer ou supprimer un groupe, et Cmd/Ctrl- ou Maj-cliquez pour déplacer plusieurs sessions à la fois</div>

Details

54 54 

55 <div className="digest-wins-grid">55 <div className="digest-wins-grid">

56 <div>Définissez <a href="/docs/fr/settings-reference#maxeffortlevel"><code>maxEffortLevel</code></a> au niveau supérieur ou par modèle sous <code>modelSettings</code> pour limiter le niveau d'effort sur chaque fournisseur, y compris Amazon Bedrock, la plateforme Agent de Google Cloud, et Microsoft Foundry ; tout niveau supérieur s'exécute à la limite</div>56 <div>Définissez <a href="/docs/fr/settings-reference#maxeffortlevel"><code>maxEffortLevel</code></a> au niveau supérieur ou par modèle sous <code>modelSettings</code> pour limiter le niveau d'effort sur chaque fournisseur, y compris Amazon Bedrock, la plateforme Agent de Google Cloud, et Microsoft Foundry ; tout niveau supérieur s'exécute à la limite</div>

57 <div>Pointez `--plugin-dir` vers un dossier de plugins pour <a href="/docs/fr/plugins#test-your-plugins-locally">charger chaque sous-dossier immédiat qui a un manifeste</a></div>57 <div>Pointez `--plugin-dir` vers un dossier de plugins pour <a href="/docs/fr/plugins/create#load-a-directory-or-archive-for-one-session">charger chaque sous-dossier immédiat qui a un manifeste</a></div>

58 <div>Si WebFetch n'a pas terminé le téléchargement d'une page dans les cinq minutes, <a href="/docs/fr/tools-reference#webfetch-tool-behavior">la récupération échoue avec une erreur de délai</a> au lieu de rester bloquée ; définissez `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` pour modifier le délai, ou à `0` pour supprimer la limite</div>58 <div>Si WebFetch n'a pas terminé le téléchargement d'une page dans les cinq minutes, <a href="/docs/fr/tools-reference#webfetch-tool-behavior">la récupération échoue avec une erreur de délai</a> au lieu de rester bloquée ; définissez `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` pour modifier le délai, ou à `0` pour supprimer la limite</div>

59 <div>Passez `--json` à <code>claude plugin install</code>, <code>uninstall</code>, <code>update</code>, <code>enable</code>, ou <code>disable</code> pour imprimer le résultat sous la forme <a href="/docs/fr/plugins-reference#plugin-json-result">d'un objet JSON sur la dernière ligne de stdout</a></div>59 <div>Passez `--json` à <code>claude plugin install</code>, <code>uninstall</code>, <code>update</code>, <code>enable</code>, ou <code>disable</code> pour imprimer le résultat sous la forme <a href="/docs/fr/plugins/cli-reference#plugin-json-result">d'un objet JSON sur la dernière ligne de stdout</a></div>

60 <div>Quand le classificateur du mode auto bloque une action, la raison que Claude reçoit <a href="/docs/fr/auto-mode-config#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry">nomme généralement la règle qui a correspondu</a>, comme <code>\[Data Exfiltration]</code></div>60 <div>Quand le classificateur du mode auto bloque une action, la raison que Claude reçoit <a href="/docs/fr/auto-mode-config#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry">nomme généralement la règle qui a correspondu</a>, comme <code>\[Data Exfiltration]</code></div>

61 <div>Quand vous tapez <code>/</code> au milieu d'une invite, vous pouvez maintenant choisir parmi <a href="/docs/fr/interactive-mode#complete-a-command-mid-prompt">une liste de commandes correspondantes</a> au lieu d'une seule suggestion. La liste s'ouvre au fur et à mesure que vous tapez en rendu plein écran. Une compétence de plugin correspond également sur son nom sans le préfixe du plugin</div>61 <div>Quand vous tapez <code>/</code> au milieu d'une invite, vous pouvez maintenant choisir parmi <a href="/docs/fr/interactive-mode#complete-a-command-mid-prompt">une liste de commandes correspondantes</a> au lieu d'une seule suggestion. La liste s'ouvre au fur et à mesure que vous tapez en rendu plein écran. Une compétence de plugin correspond également sur son nom sans le préfixe du plugin</div>

62 <div>Dans l'extension VS Code, cliquez sur le nombre d'agents en bas de la zone d'invite pour ouvrir la <a href="/docs/fr/vs-code#use-the-prompt-box">carte des agents</a>, où vous pouvez ouvrir la transcription en lecture seule d'un sous-agent ou l'arrêter</div>62 <div>Dans l'extension VS Code, cliquez sur le nombre d'agents en bas de la zone d'invite pour ouvrir la <a href="/docs/fr/vs-code#use-the-prompt-box">carte des agents</a>, où vous pouvez ouvrir la transcription en lecture seule d'un sous-agent ou l'arrêter</div>

workflows.md +1 −1

Details

239 Distribuer un workflow dans un plugin239 Distribuer un workflow dans un plugin

240</h3>240</h3>

241 241 

242Pour partager un workflow entre les équipes ou les référentiels, incluez-le dans un [plugin](/docs/fr/plugins). Placez le script dans un répertoire `workflows/` à la racine du plugin, ou pointez vers un emplacement différent avec le [champ de manifeste `workflows`](/docs/fr/plugins-reference#component-path-fields).242Pour partager un workflow entre les équipes ou les référentiels, incluez-le dans un [plugin](/docs/fr/plugins/overview). Placez le script dans un répertoire `workflows/` à la racine du plugin, ou pointez vers un emplacement différent avec le [champ de manifeste `workflows`](/docs/fr/plugins/manifest-reference#fields).

243 243 

244Les workflows de plugin sont espacés de noms par le nom du plugin. Un plugin appelé `acme-tools` contenant un script dont `meta.name` est `release-audit` s'exécute comme `/acme-tools:release-audit`.244Les workflows de plugin sont espacés de noms par le nom du plugin. Un plugin appelé `acme-tools` contenant un script dont `meta.name` est `release-audit` s'exécute comme `/acme-tools:release-audit`.

245 245 

worktrees.md +3 −1

Details

256Un worktree obtient ses propres fichiers et branche, mais il partage les éléments suivants avec l'extraction principale :256Un worktree obtient ses propres fichiers et branche, mais il partage les éléments suivants avec l'extraction principale :

257 257 

258* **Le répertoire `.git` du dépôt** : les commandes git dans un worktree écrivent dans le répertoire `.git` partagé du dépôt principal, et l'[isolation du système de fichiers](/docs/fr/sandboxing#filesystem-isolation) permet ces écritures, donc les commandes telles que `git commit` fonctionnent depuis l'intérieur d'un worktree avec le sandbox activé.258* **Le répertoire `.git` du dépôt** : les commandes git dans un worktree écrivent dans le répertoire `.git` partagé du dépôt principal, et l'[isolation du système de fichiers](/docs/fr/sandboxing#filesystem-isolation) permet ces écritures, donc les commandes telles que `git commit` fonctionnent depuis l'intérieur d'un worktree avec le sandbox activé.

259* **Plugins** : les plugins installés à [portée du projet](/docs/fr/plugins-reference#plugin-installation-scopes) à partir de l'extraction principale se chargent également dans les worktrees du même dépôt, vous n'avez donc pas besoin de les réinstaller par worktree. Nécessite Claude Code v2.1.200 ou ultérieur.259* **Plugins** : les plugins installés à [portée du projet](/docs/fr/plugins/loading#find-where-a-plugin-is-enabled) à partir de l'extraction principale se chargent également dans les worktrees du même dépôt, vous n'avez donc pas besoin de les réinstaller par worktree. Nécessite Claude Code v2.1.200 ou ultérieur.

260* **Approbations de permission** : choisir « Oui, et ne plus demander » pour une commande Bash dans une session worktree sauvegarde la règle dans le `.claude/settings.local.json` de l'extraction principale, pour qu'elle s'applique dans l'extraction principale et dans chaque autre worktree du dépôt, et qu'elle survive à la suppression du worktree. Sur Windows et dans les autres cas où Claude Code [n'utilise pas la racine du dépôt](/docs/fr/settings#where-claude-code-looks-for-each-file), la règle reste avec ce worktree. Avant la v2.1.211, une approbation accordée dans un worktree était sauvegardée à l'intérieur de ce worktree, ne s'appliquait pas ailleurs, et était perdue quand le worktree était supprimé. Voir [où les approbations sont sauvegardées](/docs/fr/permissions#permission-system).260* **Approbations de permission** : choisir « Oui, et ne plus demander » pour une commande Bash dans une session worktree sauvegarde la règle dans le `.claude/settings.local.json` de l'extraction principale, pour qu'elle s'applique dans l'extraction principale et dans chaque autre worktree du dépôt, et qu'elle survive à la suppression du worktree. Sur Windows et dans les autres cas où Claude Code [n'utilise pas la racine du dépôt](/docs/fr/settings#where-claude-code-looks-for-each-file), la règle reste avec ce worktree. Avant la v2.1.211, une approbation accordée dans un worktree était sauvegardée à l'intérieur de ce worktree, ne s'appliquait pas ailleurs, et était perdue quand le worktree était supprimé. Voir [où les approbations sont sauvegardées](/docs/fr/permissions#permission-system).

261* **Compétences, agents et commandes non suivis** : quand l'extraction du worktree n'a pas de répertoire `.claude/skills` à sa racine, par exemple parce que votre `.claude/skills` est gitignored, Claude Code charge les [compétences du projet](/docs/fr/skills#where-skills-live) de l'extraction principale dans la session worktree. Dans un worktree avec son propre répertoire `.claude/skills`, seule cette copie se charge.261* **Compétences, agents et commandes non suivis** : quand l'extraction du worktree n'a pas de répertoire `.claude/skills` à sa racine, par exemple parce que votre `.claude/skills` est gitignored, Claude Code charge les [compétences du projet](/docs/fr/skills#where-skills-live) de l'extraction principale dans la session worktree. Dans un worktree avec son propre répertoire `.claude/skills`, seule cette copie se charge.

262 262 


330 330 

331Associez-le à un hook `WorktreeRemove` pour nettoyer quand la session se termine. Voir la [référence des hooks](/docs/fr/hooks#worktreecreate) pour le schéma d'entrée et un exemple de suppression.331Associez-le à un hook `WorktreeRemove` pour nettoyer quand la session se termine. Voir la [référence des hooks](/docs/fr/hooks#worktreecreate) pour le schéma d'entrée et un exemple de suppression.

332 332 

333Un hook `WorktreeCreate` vous permet également d'exécuter [`/batch`](/docs/fr/commands#all-commands) en dehors d'un dépôt git. Chaque sous-agent `/batch` publie ensuite sa modification avec les commandes de contrôle de version de votre projet et, quand il ne peut pas ouvrir une demande de tirage, signale ce qu'il a publié à la place. L'exécution de `/batch` en dehors d'un dépôt git nécessite Claude Code v2.1.281 ou version ultérieure.

334 

333<h2 id="troubleshooting">335<h2 id="troubleshooting">

334 Dépannage336 Dépannage

335</h2>337</h2>

Details

66| Fonctionnalité | Raison |66| Fonctionnalité | Raison |

67| --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |67| --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |

68| [Sessions cloud](/docs/fr/claude-code-on-the-web), y compris celles lancées depuis l'[application Desktop](/docs/fr/desktop#cloud-sessions) | Nécessite le stockage côté serveur des données de session, y compris l'historique des conversations avec les invites et les complétions. |68| [Sessions cloud](/docs/fr/claude-code-on-the-web), y compris celles lancées depuis l'[application Desktop](/docs/fr/desktop#cloud-sessions) | Nécessite le stockage côté serveur des données de session, y compris l'historique des conversations avec les invites et les complétions. |

69| [Claude Tag](/docs/fr/claude-tag) | Conserve la mémoire du canal et les transcriptions de session. |69| [Claude Tag](https://claude.com/docs/claude-tag) | Conserve la mémoire du canal et les transcriptions de session. |

70| [Artifacts](/docs/fr/artifacts) | Nécessite de stocker le contenu de la page publiée sur l'infrastructure exploitée par Anthropic. |70| [Artifacts](/docs/fr/artifacts) | Nécessite de stocker le contenu de la page publiée sur l'infrastructure exploitée par Anthropic. |

71| Soumission de commentaires (`/feedback`, `/bug`, `/share`) | La soumission de commentaires envoie les données de conversation à Anthropic. |71| Soumission de commentaires (`/feedback`, `/bug`, `/share`) | La soumission de commentaires envoie les données de conversation à Anthropic. |

72| [Contrôle à distance](/docs/fr/remote-control) | Stocke la transcription de la session sur les serveurs Anthropic pour synchroniser la conversation entre les appareils. |72| [Contrôle à distance](/docs/fr/remote-control) | Stocke la transcription de la session sur les serveurs Anthropic pour synchroniser la conversation entre les appareils. |