SpyBara
Go Premium

Documentation 2026-07-20 23:01 UTC to 2026-07-21 23:00 UTC

7 files changed +305 −282. View all changes and history on the product overview
2026
Wed 22 17:02 Tue 21 23:00 Mon 20 23:01 Sat 18 16:02 Fri 17 22:57 Thu 16 22:59 Wed 15 22:00 Tue 14 23:01 Mon 13 23:57 Sat 11 19:03 Fri 10 17:00 Thu 9 23:58 Wed 8 16:02 Tue 7 16:02 Mon 6 23:57 Sat 4 03:01 Fri 3 23:00 Thu 2 23:59 Wed 1 21:01
Details

6 6 

7> Enregistrez la passerelle auprès de votre fournisseur d'identité, créez le conteneur, déployez sur Kubernetes ou Cloud Run, et exploitez-la : vérifications de santé, rotation des secrets, mises à jour et sécurité.7> Enregistrez la passerelle auprès de votre fournisseur d'identité, créez le conteneur, déployez sur Kubernetes ou Cloud Run, et exploitez-la : vérifications de santé, rotation des secrets, mises à jour et sécurité.

8 8 

9Cette page couvre l'aspect opérationnel de l'exécution de la [passerelle Claude apps](/fr/claude-apps-gateway) : enregistrement d'un client OAuth auprès de votre fournisseur d'identité (IdP), déploiement de la passerelle en tant que conteneur, et son exploitation au quotidien. Pour chaque option du fichier `gateway.yaml` que la passerelle lit au démarrage, consultez la [Référence de configuration](/fr/claude-apps-gateway-config).9Cette page couvre l'aspect opérationnel de l'exécution de la [passerelle Claude apps](/docs/fr/claude-apps-gateway) : enregistrement d'un client OAuth auprès de votre fournisseur d'identité (IdP), déploiement de la passerelle en tant que conteneur, et son exploitation au quotidien. Pour chaque option du fichier `gateway.yaml` que la passerelle lit au démarrage, consultez la [Référence de configuration](/docs/fr/claude-apps-gateway-config).

10 10 

11Un déploiement en production suit quatre étapes dans l'ordre, et les sections ci-dessous les correspondent. Les deux premières sont des choix à faire ; les deux dernières sont des documents de référence à consulter une fois qu'elle est en cours d'exécution.11Un déploiement en production suit quatre étapes dans l'ordre, et les sections ci-dessous les correspondent. Les deux premières sont des choix à faire ; les deux dernières sont des documents de référence à consulter une fois qu'elle est en cours d'exécution.

12 12 


31 31 

32Tout IdP conforme à OIDC fonctionne : Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate et autres. L'IdP doit répondre à trois exigences :32Tout IdP conforme à OIDC fonctionne : Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate et autres. L'IdP doit répondre à trois exigences :

33 33 

34* Servir `/.well-known/openid-configuration`, via HTTPS en production ; la passerelle accepte un [émetteur `http://`](/fr/claude-apps-gateway-config#oidc), et un émetteur de bouclage local nécessite en outre `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`34* Servir `/.well-known/openid-configuration`, via HTTPS en production ; la passerelle accepte un [émetteur `http://`](/docs/fr/claude-apps-gateway-config#oidc), et un émetteur de bouclage local nécessite en outre `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1`

35* Supporter le flux de code d'autorisation. PKCE (Proof Key for Code Exchange) est activé par défaut ; désactivez-le avec `oidc.use_pkce: false` pour les IdP qui ne le supportent pas35* Supporter le flux de code d'autorisation. PKCE (Proof Key for Code Exchange) est activé par défaut ; désactivez-le avec `oidc.use_pkce: false` pour les IdP qui ne le supportent pas

36* Retourner `email` et optionnellement `groups` dans l'id\_token, ou les servir à partir du point de terminaison userinfo avec `oidc.userinfo_fallback: true`36* Retourner `email` et optionnellement `groups` dans l'id\_token, ou les servir à partir du point de terminaison userinfo avec `oidc.userinfo_fallback: true`

37 37 


41 41 

42* **Okta** : le serveur d'autorisation de l'organisation à `https://example.okta.com` retourne un id\_token mince qui omet `email` et `groups`, donc définissez `oidc.userinfo_fallback: true` chaque fois que vous l'utilisez comme `issuer`. Un serveur d'autorisation personnalisé tel que `https://example.okta.com/oauth2/default` qui inclut `email` et optionnellement `groups` dans l'id\_token les émet directement et n'a besoin d'aucun fallback. Okta émet `groups` uniquement lorsque la portée `groups` est demandée dans `oidc.scopes` et que le filtre de revendication de groupes de l'application le permet ; `userinfo_fallback` ne peut pas remplir une revendication pour laquelle l'IdP n'a pas été interrogé.42* **Okta** : le serveur d'autorisation de l'organisation à `https://example.okta.com` retourne un id\_token mince qui omet `email` et `groups`, donc définissez `oidc.userinfo_fallback: true` chaque fois que vous l'utilisez comme `issuer`. Un serveur d'autorisation personnalisé tel que `https://example.okta.com/oauth2/default` qui inclut `email` et optionnellement `groups` dans l'id\_token les émet directement et n'a besoin d'aucun fallback. Okta émet `groups` uniquement lorsque la portée `groups` est demandée dans `oidc.scopes` et que le filtre de revendication de groupes de l'application le permet ; `userinfo_fallback` ne peut pas remplir une revendication pour laquelle l'IdP n'a pas été interrogé.

43* **Microsoft Entra ID** : `issuer` = `https://login.microsoftonline.com/<tenant-id>/v2.0`. Entra émet des ID d'objet de groupe plutôt que des noms, donc utilisez les GUID dans `managed.policies.match.groups`, ou utilisez les rôles d'application pour des noms lisibles par l'homme. Si votre locataire émet des rôles sous `roles` au lieu de `groups`, définissez `oidc.groups_claim: roles`.43* **Microsoft Entra ID** : `issuer` = `https://login.microsoftonline.com/<tenant-id>/v2.0`. Entra émet des ID d'objet de groupe plutôt que des noms, donc utilisez les GUID dans `managed.policies.match.groups`, ou utilisez les rôles d'application pour des noms lisibles par l'homme. Si votre locataire émet des rôles sous `roles` au lieu de `groups`, définissez `oidc.groups_claim: roles`.

44* **Google Workspace** : `issuer` = `https://accounts.google.com`. L'id\_token de Google ne porte pas de groupes. Pour utiliser `allowed_groups` basé sur les groupes ou `managed.policies` avec Google comme IdP, configurez [`oidc.google_groups`](/fr/claude-apps-gateway-config#oidc), qui recherche les groupes de chaque utilisateur via l'API Directory du SDK Admin en utilisant un compte de service avec délégation au niveau du domaine. Sans cela, utilisez `oidc.allowed_email_domains` pour le contrôle d'accès à l'adhésion et `managed.policies.match.email_domain` pour l'attribution de politique. Google ignore également la portée standard `offline_access`. Pour les jetons d'actualisation, définissez `oidc.scopes: [openid, profile, email]` et `oidc.extra_auth_params: { access_type: offline, prompt: consent }`.44* **Google Workspace** : `issuer` = `https://accounts.google.com`. L'id\_token de Google ne porte pas de groupes. Pour utiliser `allowed_groups` basé sur les groupes ou `managed.policies` avec Google comme IdP, configurez [`oidc.google_groups`](/docs/fr/claude-apps-gateway-config#oidc), qui recherche les groupes de chaque utilisateur via l'API Directory du SDK Admin en utilisant un compte de service avec délégation au niveau du domaine. Sans cela, utilisez `oidc.allowed_email_domains` pour le contrôle d'accès à l'adhésion et `managed.policies.match.email_domain` pour l'attribution de politique. Google ignore également la portée standard `offline_access`. Pour les jetons d'actualisation, définissez `oidc.scopes: [openid, profile, email]` et `oidc.extra_auth_params: { access_type: offline, prompt: consent }`.

45 45 

46Pour obtenir de l'aide auprès d'un fournisseur d'identité non couvert ci-dessus, consultez [Dépannage](#troubleshooting).46Pour obtenir de l'aide auprès d'un fournisseur d'identité non couvert ci-dessus, consultez [Dépannage](#troubleshooting).

47 47 

48<Warning>48<Warning>

49 Les jetons d'actualisation permettent à la passerelle de renouveler la session d'un développeur silencieusement, sans renvoyer le développeur au navigateur. Ils pilotent également le déprovisionnement, car lorsque l'IdP désactive un utilisateur, l'actualisation suivante échoue et la session se termine dans `ttl_hours`. La passerelle demande `offline_access` par défaut pour obtenir un jeton d'actualisation. Si votre IdP nécessite un consentement explicite pour l'accès hors ligne, configurez le client OAuth pour l'autoriser.49 Les jetons d'actualisation permettent à la passerelle de renouveler la session d'un développeur silencieusement, sans renvoyer le développeur au navigateur. Ils pilotent également le déprovisionnement, car lorsque l'IdP désactive un utilisateur, l'actualisation suivante échoue et la session se termine dans `ttl_hours`. La passerelle demande `offline_access` par défaut pour obtenir un jeton d'actualisation. Si votre IdP nécessite un consentement explicite pour l'accès hors ligne, configurez le client OAuth pour l'autoriser.

50 50 

51 Si votre IdP ne peut pas du tout émettre de jetons d'actualisation, la passerelle fonctionne toujours, mais il n'y a pas de renouvellement silencieux, donc les développeurs réexécutent la connexion au navigateur lorsque leur session expire. Pour éviter que cela ne se produise toutes les heures, augmentez [`session.ttl_hours`](/fr/claude-apps-gateway-config#session) à `8` ou `12`. Le compromis est la latence de déprovisionnement, car sans jetons d'actualisation un utilisateur désactivé conserve l'accès jusqu'à l'expiration du TTL plus long.51 Si votre IdP ne peut pas du tout émettre de jetons d'actualisation, la passerelle fonctionne toujours, mais il n'y a pas de renouvellement silencieux, donc les développeurs réexécutent la connexion au navigateur lorsque leur session expire. Pour éviter que cela ne se produise toutes les heures, augmentez [`session.ttl_hours`](/docs/fr/claude-apps-gateway-config#session) à `8` ou `12`. Le compromis est la latence de déprovisionnement, car sans jetons d'actualisation un utilisateur désactivé conserve l'accès jusqu'à l'expiration du TTL plus long.

52</Warning>52</Warning>

53 53 

54<h2 id="deployment">54<h2 id="deployment">


62Quelques décisions façonnent le déploiement au-delà de l'endroit où il s'exécute :62Quelques décisions façonnent le déploiement au-delà de l'endroit où il s'exécute :

63 63 

64* **Coûts** : il n'y a pas de licence séparée ou de frais par siège pour la passerelle ; elle fait partie du binaire `claude`. Vous payez l'inférence via votre engagement cloud ou Anthropic existant, plus le calcul pour le conteneur et votre collecteur de télémétrie.64* **Coûts** : il n'y a pas de licence séparée ou de frais par siège pour la passerelle ; elle fait partie du binaire `claude`. Vous payez l'inférence via votre engagement cloud ou Anthropic existant, plus le calcul pour le conteneur et votre collecteur de télémétrie.

65* **Contournement** : la passerelle n'impose pas que la seule route vers un modèle passe par elle. Un développeur avec sa propre credential peut toujours appeler le fournisseur directement, donc fermer ce chemin est une décision de politique réseau, par exemple bloquer la sortie vers `api.anthropic.com` sauf depuis la passerelle. Bloquer cette sortie casse également la [vérification de sécurité du domaine WebFetch](/fr/data-usage#webfetch-domain-safety-check), qui appelle `api.anthropic.com` depuis la machine de chaque développeur ; définissez `skipWebFetchPreflight: true` dans la politique gérée pour la désactiver.65* **Contournement** : la passerelle n'impose pas que la seule route vers un modèle passe par elle. Un développeur avec sa propre credential peut toujours appeler le fournisseur directement, donc fermer ce chemin est une décision de politique réseau, par exemple bloquer la sortie vers `api.anthropic.com` sauf depuis la passerelle. Bloquer cette sortie casse également la [vérification de sécurité du domaine WebFetch](/docs/fr/data-usage#webfetch-domain-safety-check), qui appelle `api.anthropic.com` depuis la machine de chaque développeur ; définissez `skipWebFetchPreflight: true` dans la politique gérée pour la désactiver.

66* **Passerelles multiples** : chaque passerelle est un déploiement séparé avec sa propre configuration. Le CLI stocke son empreinte de confiance et ses credentials par nom d'hôte de passerelle, donc différentes équipes peuvent se connecter à différentes passerelles sans conflit. Pour servir plusieurs émetteurs OIDC, exécutez des instances séparées.66* **Passerelles multiples** : chaque passerelle est un déploiement séparé avec sa propre configuration. Le CLI stocke son empreinte de confiance et ses credentials par nom d'hôte de passerelle, donc différentes équipes peuvent se connecter à différentes passerelles sans conflit. Pour servir plusieurs émetteurs OIDC, exécutez des instances séparées.

67* **Sans serveur** : Cloud Run fonctionne ; définissez `min-instances: 1` pour éviter la découverte OIDC à froid. Lambda et Cloud Functions ne fonctionnent pas, car la passerelle est un serveur HTTP de longue durée.67* **Sans serveur** : Cloud Run fonctionne ; définissez `min-instances: 1` pour éviter la découverte OIDC à froid. Lambda et Cloud Functions ne fonctionnent pas, car la passerelle est un serveur HTTP de longue durée.

68 68 

69Chaque topologie de production ici place un proxy L7, tel qu'une Ingress, le front-end de Cloud Run ou un ALB, devant les répliques HTTP simples. Définissez [`listen.trusted_proxies`](/fr/claude-apps-gateway-config#listen) sur les plages sources du proxy afin que la passerelle lise les adresses IP des clients à partir de `X-Forwarded-For`. La passerelle honore l'en-tête uniquement lorsque le pair TCP est de confiance ; l'[exemple travaillé Google Cloud](/fr/claude-apps-gateway-on-gcp) a des valeurs concrètes par topologie. Sans proxies de confiance, chaque demande semble provenir de l'adresse IP du proxy, ce qui réduit les limites de débit par IP en un seul compartiment partagé et enregistre l'adresse IP du proxy dans les événements d'audit.69Chaque topologie de production ici place un proxy L7, tel qu'une Ingress, le front-end de Cloud Run ou un ALB, devant les répliques HTTP simples. Définissez [`listen.trusted_proxies`](/docs/fr/claude-apps-gateway-config#listen) sur les plages sources du proxy afin que la passerelle lise les adresses IP des clients à partir de `X-Forwarded-For`. La passerelle honore l'en-tête uniquement lorsque le pair TCP est de confiance ; l'[exemple travaillé Google Cloud](/docs/fr/claude-apps-gateway-on-gcp) a des valeurs concrètes par topologie. Sans proxies de confiance, chaque demande semble provenir de l'adresse IP du proxy, ce qui réduit les limites de débit par IP en un seul compartiment partagé et enregistre l'adresse IP du proxy dans les événements d'audit.

70 70 

71<h3 id="container-image">71<h3 id="container-image">

72 Image de conteneur72 Image de conteneur


74 74 

75Créez votre propre image autour du binaire `claude` natif de la version standard de Claude Code :75Créez votre propre image autour du binaire `claude` natif de la version standard de Claude Code :

76 76 

771. Téléchargez la version Linux pour l'architecture de votre image à partir d'une version épinglée ; consultez [Installer une version spécifique](/fr/setup#install-a-specific-version) pour l'URL de téléchargement.771. Téléchargez la version Linux pour l'architecture de votre image à partir d'une version épinglée ; consultez [Installer une version spécifique](/docs/fr/setup#install-a-specific-version) pour l'URL de téléchargement.

782. Vérifiez-la par rapport au `manifest.json` signé GPG de la version comme décrit dans [Intégrité binaire et signature de code](/fr/setup#binary-integrity-and-code-signing).782. Vérifiez-la par rapport au `manifest.json` signé GPG de la version comme décrit dans [Intégrité binaire et signature de code](/docs/fr/setup#binary-integrity-and-code-signing).

793. Copiez-la dans le contexte de construction.793. Copiez-la dans le contexte de construction.

80 80 

81Miroitez la version dans votre registre interne si vos constructions ne peuvent pas atteindre l'hôte de version, et épinglez la version que votre flotte exécute.81Miroitez la version dans votre registre interne si vos constructions ne peuvent pas atteindre l'hôte de version, et épinglez la version que votre flotte exécute.

82 82 

83Au-delà du binaire, l'image a besoin de :83Au-delà du binaire, l'image a besoin de :

84 84 

85* **Une image basée sur glibc** : la seule dépendance dynamique de la version glibc est les bibliothèques glibc. Les images basées sur Musl ont besoin de la version `linux-x64-musl` ou `linux-arm64-musl` plus des packages supplémentaires ; consultez [Configuration Alpine Linux](/fr/setup#alpine-linux-and-musl-based-distributions).85* **Une image basée sur glibc** : la seule dépendance dynamique de la version glibc est les bibliothèques glibc. Les images basées sur Musl ont besoin de la version `linux-x64-musl` ou `linux-arm64-musl` plus des packages supplémentaires ; consultez [Configuration Alpine Linux](/docs/fr/setup#alpine-linux-and-musl-based-distributions).

86* **Un répertoire d'état inscriptible** : la passerelle s'exécute en tant qu'utilisateur quelconque, mais les images minimales n'ont pas de répertoire personnel inscriptible. Définissez `CLAUDE_CONFIG_DIR` sur un chemin inscriptible tel que `/tmp/.claude`.86* **Un répertoire d'état inscriptible** : la passerelle s'exécute en tant qu'utilisateur quelconque, mais les images minimales n'ont pas de répertoire personnel inscriptible. Définissez `CLAUDE_CONFIG_DIR` sur un chemin inscriptible tel que `/tmp/.claude`.

87* **La commande du conteneur** : `claude gateway --config /etc/claude/gateway.yaml`, avec le fichier de configuration monté en lecture seule et les secrets fournis en tant que variables d'environnement ; la passerelle écoute sur `listen.port`, par défaut `8080`.87* **La commande du conteneur** : `claude gateway --config /etc/claude/gateway.yaml`, avec le fichier de configuration monté en lecture seule et les secrets fournis en tant que variables d'environnement ; la passerelle écoute sur `listen.port`, par défaut `8080`.

88 88 


99<Note>99<Note>

100 **Identité de charge de travail**100 **Identité de charge de travail**

101 101 

102 Préférez l'identité de charge de travail de la plateforme aux clés statiques : IRSA sur EKS pour Bedrock et pour Claude Platform sur AWS, Workload Identity sur GKE pour Agent Platform, et identité de charge de travail sur AKS pour Foundry. Définissez `auth: {}` dans le bloc en amont, ou `use_azure_ad: true` pour Foundry, et la passerelle récupère l'identité du pod via la chaîne de credentials par défaut de ce fournisseur. Pour un appairage inter-cloud, tel qu'un amont Bedrock sur GKE, définissez des credentials explicites dans le bloc `auth` de l'amont à la place. La [référence `upstreams`](/fr/claude-apps-gateway-config#upstreams) a des détails de configuration par plateforme.102 Préférez l'identité de charge de travail de la plateforme aux clés statiques : IRSA sur EKS pour Bedrock et pour Claude Platform sur AWS, Workload Identity sur GKE pour Agent Platform, et identité de charge de travail sur AKS pour Foundry. Définissez `auth: {}` dans le bloc en amont, ou `use_azure_ad: true` pour Foundry, et la passerelle récupère l'identité du pod via la chaîne de credentials par défaut de ce fournisseur. Pour un appairage inter-cloud, tel qu'un amont Bedrock sur GKE, définissez des credentials explicites dans le bloc `auth` de l'amont à la place. La [référence `upstreams`](/docs/fr/claude-apps-gateway-config#upstreams) a des détails de configuration par plateforme.

103</Note>103</Note>

104 104 

105<h3 id="cloud-run">105<h3 id="cloud-run">


109Configurez le service comme suit :109Configurez le service comme suit :

110 110 

111* Laissez `listen.port` à sa valeur par défaut de `8080`, qui correspond au `PORT` par défaut de Cloud Run, ou définissez `port: ${PORT}`111* Laissez `listen.port` à sa valeur par défaut de `8080`, qui correspond au `PORT` par défaut de Cloud Run, ou définissez `port: ${PORT}`

112* Définissez `public_url` sur l'origine accessible de l'extérieur. Pour la production, c'est normalement le nom d'hôte d'un équilibreur de charge interne, car `/login` [rejette les adresses publiques](/fr/claude-apps-gateway#prerequisites) et l'URL `*.run.app` se résout en une, donc l'URL Cloud Run seule fonctionne uniquement pour un test de fumée `curl` ou navigateur. L'exception est un réseau où `*.run.app` se résout en privé via Private Service Connect et une zone privée Cloud DNS ; dans cette topologie l'URL Cloud Run est un `public_url` valide. L'[exemple travaillé Google Cloud](/fr/claude-apps-gateway-on-gcp#deploy-the-gateway) couvre les deux.112* Définissez `public_url` sur l'origine accessible de l'extérieur. Pour la production, c'est normalement le nom d'hôte d'un équilibreur de charge interne, car `/login` [rejette les adresses publiques](/docs/fr/claude-apps-gateway#prerequisites) et l'URL `*.run.app` se résout en une, donc l'URL Cloud Run seule fonctionne uniquement pour un test de fumée `curl` ou navigateur. L'exception est un réseau où `*.run.app` se résout en privé via Private Service Connect et une zone privée Cloud DNS ; dans cette topologie l'URL Cloud Run est un `public_url` valide. L'[exemple travaillé Google Cloud](/docs/fr/claude-apps-gateway-on-gcp#deploy-the-gateway) couvre les deux.

113* Montez la configuration en tant que volume secret113* Montez la configuration en tant que volume secret

114* Définissez `min-instances: 1` pour éviter une découverte OIDC à froid à la première demande114* Définissez `min-instances: 1` pour éviter une découverte OIDC à froid à la première demande

115 115 

116<Note>116<Note>

117 Pour un exemple travaillé complet sur Google Cloud, couvrant Cloud Run ou GKE, Cloud SQL et Secret Manager, consultez [Déployer sur Google Cloud](/fr/claude-apps-gateway-on-gcp).117 Pour un exemple travaillé complet sur Google Cloud, couvrant Cloud Run ou GKE, Cloud SQL et Secret Manager, consultez [Déployer sur Google Cloud](/docs/fr/claude-apps-gateway-on-gcp).

118</Note>118</Note>

119 119 

120<h3 id="push-the-gateway-url-to-developer-machines">120<h3 id="push-the-gateway-url-to-developer-machines">

121 Envoyer l'URL de la passerelle aux machines des développeurs121 Envoyer l'URL de la passerelle aux machines des développeurs

122</h3>122</h3>

123 123 

124Une fois que la passerelle est en service, envoyez `forceLoginMethod` et `forceLoginGatewayUrl` à la machine de chaque développeur via les paramètres gérés, via MDM ou en écrivant directement le fichier `managed-settings.json` par système d'exploitation. Sans cela, `/login` affiche le sélecteur de compte standard sans option de passerelle. Consultez [Paramètres gérés côté client](/fr/claude-apps-gateway-config#client-side-managed-settings) pour les chemins de fichiers.124Une fois que la passerelle est en service, envoyez `forceLoginMethod` et `forceLoginGatewayUrl` à la machine de chaque développeur via les paramètres gérés, via MDM ou en écrivant directement le fichier `managed-settings.json` par système d'exploitation. Sans cela, `/login` affiche le sélecteur de compte standard sans option de passerelle. Consultez [Paramètres gérés côté client](/docs/fr/claude-apps-gateway-config#client-side-managed-settings) pour les chemins de fichiers.

125 125 

126<h2 id="operations">126<h2 id="operations">

127 Opérations127 Opérations


160 160 

161* **Sessions existantes** : les jetons porteurs valident localement avec le secret JWT, les actualisations de session ne touchent pas le magasin, et le processus de passerelle peut toujours servir l'inférence161* **Sessions existantes** : les jetons porteurs valident localement avec le secret JWT, les actualisations de session ne touchent pas le magasin, et le processus de passerelle peut toujours servir l'inférence

162* **Nouvelles connexions** : échouent jusqu'à la récupération de Postgres, car le flux d'appareil et ses compteurs de limite de débit vivent dans Postgres162* **Nouvelles connexions** : échouent jusqu'à la récupération de Postgres, car le flux d'appareil et ses compteurs de limite de débit vivent dans Postgres

163* **[Application des limites de dépenses](/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 compteur163* **[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

164* **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.164* **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.

165 165 

166Si 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.166Si 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.


191| `admin_audit` | Piste de mutation de l'API admin | `admin.audit_retention_days`, par défaut 365 |191| `admin_audit` | Piste de mutation de l'API admin | `admin.audit_retention_days`, par défaut 365 |

192| `principal_emails` | Email, nom d'affichage et groupes IdP de chaque principal vus en dernier. Contient des PII. | `admin.identity_retention_days` depuis la dernière activité, par défaut 90 |192| `principal_emails` | Email, nom d'affichage et groupes IdP de chaque principal vus en dernier. Contient des PII. | `admin.identity_retention_days` depuis la dernière activité, par défaut 90 |

193 193 

194Une boucle de 30 secondes expire les lignes `kv` au-delà de leur TTL, et un balayage horaire applique les fenêtres de rétention sur les tables de dépenses, donc rien ne croît sans limite. Sans [limites de dépenses](/fr/claude-apps-gateway-spend-limits) configurées, seul `kv` est écrit. Si votre politique de sécurité interdit DDL du rôle d'application, pré-créez ces tables et `_migrations` avec un rôle admin et accordez au rôle d'application `SELECT, INSERT, UPDATE, DELETE` sur chacun.194Une boucle de 30 secondes expire les lignes `kv` au-delà de leur TTL, et un balayage horaire applique les fenêtres de rétention sur les tables de dépenses, donc rien ne croît sans limite. Sans [limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits) configurées, seul `kv` est écrit. Si votre politique de sécurité interdit DDL du rôle d'application, pré-créez ces tables et `_migrations` avec un rôle admin et accordez au rôle d'application `SELECT, INSERT, UPDATE, DELETE` sur chacun.

195 195 

196Avec les limites de dépenses en usage, une base de données perdue signifie le suivi des dépenses et les plafonds perdus, pas seulement les re-connexions des développeurs, donc exécutez des sauvegardes régulières. Pour effacer immédiatement un développeur parti plutôt que d'attendre la rétention, exécutez `DELETE FROM principal_emails WHERE principal = '<sub>'` directement ; cela supprime la seule table contenant son email, son nom et ses groupes. Les lignes `spend` et `admin_audit` ne référencent que le `sub` OIDC pseudonyme.196Avec les limites de dépenses en usage, une base de données perdue signifie le suivi des dépenses et les plafonds perdus, pas seulement les re-connexions des développeurs, donc exécutez des sauvegardes régulières. Pour effacer immédiatement un développeur parti plutôt que d'attendre la rétention, exécutez `DELETE FROM principal_emails WHERE principal = '<sub>'` directement ; cela supprime la seule table contenant son email, son nom et ses groupes. Les lignes `spend` et `admin_audit` ne référencent que le `sub` OIDC pseudonyme.

197 197 


218| Données | Chemin | Envoyé à Anthropic par la passerelle |218| Données | Chemin | Envoyé à Anthropic par la passerelle |

219| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------- |219| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ---------------------------------------------------- |

220| Inférence (invites, complétions) | CLI → passerelle → votre amont | Uniquement si l'API Anthropic est un amont configuré |220| Inférence (invites, complétions) | CLI → passerelle → votre amont | Uniquement si l'API Anthropic est un amont configuré |

221| Télémétrie (métriques OTLP, plus [journaux et traces opt-in](/fr/claude-apps-gateway-config#telemetry)) | CLI → passerelle → votre collecteur | Jamais |221| Télémétrie (métriques OTLP, plus [journaux et traces opt-in](/docs/fr/claude-apps-gateway-config#telemetry)) | CLI → passerelle → votre collecteur | Jamais |

222| Identité (email, groupes, sub) | IdP → passerelle → JWT → CLI ; le CLI l'estampille sur les exports OTLP | Jamais |222| Identité (email, groupes, sub) | IdP → passerelle → JWT → CLI ; le CLI l'estampille sur les exports OTLP | Jamais |

223| Paramètres gérés | Votre YAML de passerelle → CLI | Jamais |223| Paramètres gérés | Votre YAML de passerelle → CLI | Jamais |

224| Journal d'audit | Stderr de passerelle → votre agrégateur | Jamais |224| Journal d'audit | Stderr de passerelle → votre agrégateur | Jamais |


237 237 

238Deux menaces sont hors de portée car c'est votre infrastructure à sécuriser :238Deux menaces sont hors de portée car c'est votre infrastructure à sécuriser :

239 239 

240* **Un hôte de passerelle compromis** : l'hôte détient à la fois la credential en amont et distribue les [paramètres gérés](/fr/claude-apps-gateway-config#managed) à chaque développeur connecté, donc le contrôle de la configuration de la passerelle est comparable au contrôle de votre MDM. La boîte de dialogue d'approbation unique du CLI pour les paramètres capables de shell limite les changements silencieux mais ne remplace pas la sécurité de l'hôte.240* **Un hôte de passerelle compromis** : l'hôte détient à la fois la credential en amont et distribue les [paramètres gérés](/docs/fr/claude-apps-gateway-config#managed) à chaque développeur connecté, donc le contrôle de la configuration de la passerelle est comparable au contrôle de votre MDM. La boîte de dialogue d'approbation unique du CLI pour les paramètres capables de shell limite les changements silencieux mais ne remplace pas la sécurité de l'hôte.

241* **Un fournisseur OIDC malveillant** : le fournisseur signe les id\_tokens que la passerelle fait confiance, donc il peut affirmer n'importe quelle identité. L'examen et la sécurisation de votre IdP sont votre responsabilité.241* **Un fournisseur OIDC malveillant** : le fournisseur signe les id\_tokens que la passerelle fait confiance, donc il peut affirmer n'importe quelle identité. L'examen et la sécurisation de votre IdP sont votre responsabilité.

242 242 

243<h3 id="user-code-brute-force-resistance">243<h3 id="user-code-brute-force-resistance">


246 246 

247Le `user_code` qu'un développeur tape dans la page de vérification `/device` est 8 caractères tirés d'un alphabet de 20 caractères, ce qui donne 20⁸ ou environ 2,56×10¹⁰ combinaisons, et il expire après 10 minutes.247Le `user_code` qu'un développeur tape dans la page de vérification `/device` est 8 caractères tirés d'un alphabet de 20 caractères, ce qui donne 20⁸ ou environ 2,56×10¹⁰ combinaisons, et il expire après 10 minutes.

248 248 

249La passerelle applique des limites de débit par IP sur les points de terminaison de subvention d'appareil, configurables via [`rate_limits`](/fr/claude-apps-gateway-config#http-tuning). Augmentez les limites si de nombreux développeurs se connectent à partir d'une seule adresse NAT d'entreprise partagée. Les limites s'appliquent uniquement au flux de connexion, pas à l'inférence.249La passerelle applique des limites de débit par IP sur les points de terminaison de subvention d'appareil, configurables via [`rate_limits`](/docs/fr/claude-apps-gateway-config#http-tuning). Augmentez les limites si de nombreux développeurs se connectent à partir d'une seule adresse NAT d'entreprise partagée. Les limites s'appliquent uniquement au flux de connexion, pas à l'inférence.

250 250 

251<h3 id="compliance-posture">251<h3 id="compliance-posture">

252 Posture de conformité252 Posture de conformité


255* **Résidence des données** : le plan de données de la passerelle elle-même n'envoie rien à Anthropic sauf si l'API Anthropic est un amont configuré ; lorsqu'elle l'est, votre accord de traitement des données existant s'applique au chemin d'inférence. La télémétrie, l'audit, l'identité et les paramètres vont uniquement aux destinations que vous configurez.255* **Résidence des données** : le plan de données de la passerelle elle-même n'envoie rien à Anthropic sauf si l'API Anthropic est un amont configuré ; lorsqu'elle l'est, votre accord de traitement des données existant s'applique au chemin d'inférence. La télémétrie, l'audit, l'identité et les paramètres vont uniquement aux destinations que vous configurez.

256* **Trafic du processus hôte** : le processus hôte est le CLI Claude Code, qui peut envoyer l'analytique de démarrage et les vérifications de mise à jour à Anthropic. Pour les déploiements à sortie stricte, définissez `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` dans l'environnement du conteneur de la passerelle.256* **Trafic du processus hôte** : le processus hôte est le CLI Claude Code, qui peut envoyer l'analytique de démarrage et les vérifications de mise à jour à Anthropic. Pour les déploiements à sortie stricte, définissez `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` dans l'environnement du conteneur de la passerelle.

257* **Analytique client** : le CLI désactive sa propre analytique d'utilisation lorsqu'il est connecté à une passerelle, et le rapport d'erreurs est désactivé par défaut sur les surfaces d'API tierces.257* **Analytique client** : le CLI désactive sa propre analytique d'utilisation lorsqu'il est connecté à une passerelle, et le rapport d'erreurs est désactivé par défaut sur les surfaces d'API tierces.

258* **Machines client** : les CLI des développeurs envoient toujours les vérifications de nom d'hôte WebFetch et les vérifications de version à Anthropic sauf si `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` et `skipWebFetchPreflight: true` sont définis. Consultez [utilisation des données](/fr/data-usage).258* **Machines client** : les CLI des développeurs envoient toujours les vérifications de nom d'hôte WebFetch et les vérifications de version à Anthropic sauf si `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` et `skipWebFetchPreflight: true` sont définis. Consultez [utilisation des données](/docs/fr/data-usage).

259* **Évaluations d'enquête** : la credential de passerelle désactive le puits d'évaluation lié à Anthropic, donc les évaluations ne sont pas envoyées à Anthropic.259* **Évaluations d'enquête** : la credential de passerelle désactive le puits d'évaluation lié à Anthropic, donc les évaluations ne sont pas envoyées à Anthropic.

260* **Partage de transcription** : choisir Oui sur une invite de partage de transcription d'enquête écrit un fichier local sous `~/.claude/feedback-bundles/` au lieu de télécharger vers Anthropic.260* **Partage de transcription** : choisir Oui sur une invite de partage de transcription d'enquête écrit un fichier local sous `~/.claude/feedback-bundles/` au lieu de télécharger vers Anthropic.

261* **Mises à jour client** : les vérifications de mise à jour sont séparées du trafic de passerelle. Épinglez les versions via votre propre distribution et définissez `DISABLE_UPDATES` si les ordinateurs portables ne doivent pas récupérer les versions. `DISABLE_AUTOUPDATER` arrête uniquement les mises à jour en arrière-plan tandis que `claude update` fonctionne toujours.261* **Mises à jour client** : les vérifications de mise à jour sont séparées du trafic de passerelle. Épinglez les versions via votre propre distribution et définissez `DISABLE_UPDATES` si les ordinateurs portables ne doivent pas récupérer les versions. `DISABLE_AUTOUPDATER` arrête uniquement les mises à jour en arrière-plan tandis que `claude update` fonctionne toujours.

262* **TLS** : servez `public_url` via HTTPS en production, soit à partir du propre écouteur de la passerelle via `listen.tls`, soit à partir d'une ingress terminant TLS devant les répliques HTTP simples avec `listen.public_url` défini. La passerelle ne refuse pas HTTP simple. L'IdP doit servir HTTPS en production, et Postgres supporte `?sslmode=require`. Définissez `Strict-Transport-Security` à votre ingress.262* **TLS** : servez `public_url` via HTTPS en production, soit à partir du propre écouteur de la passerelle via `listen.tls`, soit à partir d'une ingress terminant TLS devant les répliques HTTP simples avec `listen.public_url` défini. La passerelle ne refuse pas HTTP simple. L'IdP doit servir HTTPS en production, et Postgres supporte `?sslmode=require`. Définissez `Strict-Transport-Security` à votre ingress.

263* **Divulgation de vulnérabilité** : suivez [Signaler les problèmes de sécurité](/fr/security#reporting-security-issues)263* **Divulgation de vulnérabilité** : suivez [Signaler les problèmes de sécurité](/docs/fr/security#reporting-security-issues)

264 264 

265<h2 id="troubleshooting">265<h2 id="troubleshooting">

266 Dépannage266 Dépannage


272* **Problème de connexion** : le développeur exécute `claude --debug-file ./claude-debug.txt`, reproduit et envoie ce fichier plus le journal d'audit de la passerelle pour la même fenêtre272* **Problème de connexion** : le développeur exécute `claude --debug-file ./claude-debug.txt`, reproduit et envoie ce fichier plus le journal d'audit de la passerelle pour la même fenêtre

273* **Problème d'inférence** : le modèle demandé, les amonts configurés et le journal d'audit de la passerelle pour la demande, qui enregistre quel amont l'a servie et le statut de la réponse273* **Problème d'inférence** : le modèle demandé, les amonts configurés et le journal d'audit de la passerelle pour la demande, qui enregistre quel amont l'a servie et le statut de la réponse

274 274 

275La sortie d'erreur standard de la passerelle inclut le flux d'événements d'audit, le journal d'audit enregistre les identités des développeurs, et le fichier de débogage enregistre la sortie des hooks et du serveur MCP de la machine du développeur. Examinez et masquez ces informations avant de les publier sur un problème public.

276 

275| Symptôme | Cause | Correctif |277| Symptôme | Cause | Correctif |

276| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |278| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

277| Le `/login` d'un développeur affiche le sélecteur de compte standard au lieu de l'écran **Passerelle cloud** | `forceLoginMethod` ou `forceLoginGatewayUrl` n'est pas défini dans les paramètres gérés sur cette machine | Déployez le [fichier de paramètres gérés](/fr/claude-apps-gateway#set-the-gateway-url) sur l'appareil ; `/login` lit l'URL de la passerelle à partir de là |279| Le `/login` d'un développeur affiche le sélecteur de compte standard au lieu de l'écran **Passerelle cloud** | `forceLoginMethod` ou `forceLoginGatewayUrl` n'est pas défini dans les paramètres gérés sur cette machine | Déployez le [fichier de paramètres gérés](/docs/fr/claude-apps-gateway#set-the-gateway-url) sur l'appareil ; `/login` lit l'URL de la passerelle à partir de là |

278| Le démarrage affiche `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La version de Claude Code installée est antérieure au support de la passerelle | Demandez au développeur de mettre à jour Claude Code vers une version qui inclut le support de la passerelle cloud |280| Le démarrage affiche `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La version de Claude Code installée est antérieure au support de la passerelle | Demandez au développeur de mettre à jour Claude Code vers une version qui inclut le support de la passerelle cloud |

279| CLI `/login` : `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Le nom d'hôte de la passerelle se résout en au moins une adresse IP publique. Claude Code vérifie chaque adresse résolue et exige que chacune soit privée. Une cause courante est un nom double pile où une famille se résout en une adresse publique, y compris les équilibreurs de charge double pile internes AWS, qui retournent des adresses AAAA de plage publique. {/* min-version: 2.1.206 */}Les points de terminaison de passerelle publique exploités par Anthropic sont exemptés de la vérification, et `/login` les accepte via `https://`. Avant v2.1.206, `/login` les rejetait comme n'importe quelle autre adresse publique | Faites en sorte que le nom de la passerelle se résout uniquement en adresses privées sur les machines des développeurs. Pour un nom double pile, supprimez l'enregistrement de plage publique ou servez un nom DNS interne uniquement séparé. Consultez la [prérequis de réseau privé](/fr/claude-apps-gateway#prerequisites). |281| CLI `/login` : `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Le nom d'hôte de la passerelle se résout en au moins une adresse IP publique. Claude Code vérifie chaque adresse résolue et exige que chacune soit privée. Une cause courante est un nom double pile où une famille se résout en une adresse publique, y compris les équilibreurs de charge double pile internes AWS, qui retournent des adresses AAAA de plage publique. {/* min-version: 2.1.206 */}Les points de terminaison de passerelle publique exploités par Anthropic sont exemptés de la vérification, et `/login` les accepte via `https://`. Avant v2.1.206, `/login` les rejetait comme n'importe quelle autre adresse publique | Faites en sorte que le nom de la passerelle se résout uniquement en adresses privées sur les machines des développeurs. Pour un nom double pile, supprimez l'enregistrement de plage publique ou servez un nom DNS interne uniquement séparé. Consultez la [prérequis de réseau privé](/docs/fr/claude-apps-gateway#prerequisites). |

280| CLI `/login` : `Gateway login requires a direct connection and does not support connecting through an HTTP proxy` | Un `HTTPS_PROXY` ou `HTTP_PROXY` s'applique à l'hôte de la passerelle et le nom d'hôte du proxy se résout en une adresse publique. Un proxy dont l'hôte se résout uniquement en adresses privées est autorisé et ne déclenche pas cette erreur | Ajoutez l'hôte de la passerelle à `NO_PROXY` sur la machine du développeur afin que la connexion soit directe, ou utilisez un proxy dont le nom d'hôte se résout en adresses privées |282| CLI `/login` : `Gateway login requires a direct connection and does not support connecting through an HTTP proxy` | Un `HTTPS_PROXY` ou `HTTP_PROXY` s'applique à l'hôte de la passerelle et le nom d'hôte du proxy se résout en une adresse publique. Un proxy dont l'hôte se résout uniquement en adresses privées est autorisé et ne déclenche pas cette erreur | Ajoutez l'hôte de la passerelle à `NO_PROXY` sur la machine du développeur afin que la connexion soit directe, ou utilisez un proxy dont le nom d'hôte se résout en adresses privées |

281| CLI `/login` : `Could not resolve gateway host <host>` | La machine ne peut pas résoudre le nom DNS interne de la passerelle, généralement parce qu'elle n'est pas sur le réseau d'entreprise | Demandez au développeur de se connecter à votre réseau ou VPN, puis réessayez `/login` |283| CLI `/login` : `Could not resolve gateway host <host>` | La machine ne peut pas résoudre le nom DNS interne de la passerelle, généralement parce qu'elle n'est pas sur le réseau d'entreprise | Demandez au développeur de se connecter à votre réseau ou VPN, puis réessayez `/login` |

282| Le démarrage se termine avec une erreur de validation de configuration nommant `store.postgres_url` | Aucun Postgres configuré ; la passerelle nécessite Postgres | Définissez `store.postgres_url`. Pour le développement local, utilisez un conteneur jetable : `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |284| Le démarrage se termine avec une erreur de validation de configuration nommant `store.postgres_url` | Aucun Postgres configuré ; la passerelle nécessite Postgres | Définissez `store.postgres_url`. Pour le développement local, utilisez un conteneur jetable : `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

283| Le démarrage se termine : `requires the native binary` | Exécution sous Node au lieu du binaire natif | Installez Claude Code avec l'une des [méthodes d'installation autonome](/fr/setup) |285| Le démarrage se termine : `requires the native binary` | Exécution sous Node au lieu du binaire natif | Installez Claude Code avec l'une des [méthodes d'installation autonome](/docs/fr/setup) |

284| Le démarrage se termine avec une erreur de découverte OIDC après `config.load` | `oidc.issuer` inaccessible, ou chaîne TLS non approuvée | Vérifiez que l'émetteur est accessible depuis le pod et sert `/.well-known/openid-configuration`. Définissez `ca_cert_pem` pour l'infrastructure à clé publique privée. |286| Le démarrage se termine avec une erreur de découverte OIDC après `config.load` | `oidc.issuer` inaccessible, ou chaîne TLS non approuvée | Vérifiez que l'émetteur est accessible depuis le pod et sert `/.well-known/openid-configuration`. Définissez `ca_cert_pem` pour l'infrastructure à clé publique privée. |

285| Le démarrage se termine avec une erreur de permission Postgres | Le rôle d'application manque `CREATE TABLE` | Pré-créez le schéma avec un rôle admin et accordez DML au rôle d'application, ou accordez DDL temporairement pour les démarrages qui appliquent de nouvelles migrations |287| Le démarrage se termine avec une erreur de permission Postgres | Le rôle d'application manque `CREATE TABLE` | Pré-créez le schéma avec un rôle admin et accordez DML au rôle d'application, ou accordez DDL temporairement pour les démarrages qui appliquent de nouvelles migrations |

286| `/oauth/callback` affiche « La connexion n'a pas pu être complétée » | Domaine de courrier rejeté, validation id\_token échouée, ou `email_verified` est explicitement `false`, que la passerelle rejette toujours sans remplacement | Vérifiez `allowed_email_domains` et que l'IdP retourne une revendication `email` vérifiée. Pour `email_verified: false`, corrigez la vérification côté IdP. Si votre IdP émet l'email sous un nom de revendication différent, définissez `oidc.email_claim`. |288| `/oauth/callback` affiche « La connexion n'a pas pu être complétée » | Domaine de courrier rejeté, validation id\_token échouée, ou `email_verified` est explicitement `false`, que la passerelle rejette toujours sans remplacement | Vérifiez `allowed_email_domains` et que l'IdP retourne une revendication `email` vérifiée. Pour `email_verified: false`, corrigez la vérification côté IdP. Si votre IdP émet l'email sous un nom de revendication différent, définissez `oidc.email_claim`. |


293| La connexion se termine à l'IdP mais le rappel échoue, avec une erreur CSP dans Chrome ou « ce lien de connexion a expiré » dans Safari | L'IdP a retourné le code via `response_mode=form_post`, qui l'auto-soumet inter-sites via POST à `/oauth/callback`. Chrome bloque cela sous une CSP stricte ; Safari autorise la soumission mais le rappel lit uniquement la chaîne de requête. | Assurez-vous que votre IdP honore `response_mode=query`, que la passerelle demande explicitement afin que le rappel soit une redirection simple |295| La connexion se termine à l'IdP mais le rappel échoue, avec une erreur CSP dans Chrome ou « ce lien de connexion a expiré » dans Safari | L'IdP a retourné le code via `response_mode=form_post`, qui l'auto-soumet inter-sites via POST à `/oauth/callback`. Chrome bloque cela sous une CSP stricte ; Safari autorise la soumission mais le rappel lit uniquement la chaîne de requête. | Assurez-vous que votre IdP honore `response_mode=query`, que la passerelle demande explicitement afin que le rappel soit une redirection simple |

294| La connexion fonctionne localement mais échoue derrière un ALB | `public_url` non défini, donc l'IdP obtient l'origine `http://` interne comme `redirect_uri` | Définissez `listen.public_url` sur l'origine `https://` externe |296| La connexion fonctionne localement mais échoue derrière un ALB | `public_url` non défini, donc l'IdP obtient l'origine `http://` interne comme `redirect_uri` | Définissez `listen.public_url` sur l'origine `https://` externe |

295| Le développeur voit l'invite de confiance à plusieurs reprises | Le certificat TLS tourne par réplique ou par demande | Utilisez un certificat stable à l'ingress, ou terminez TLS une fois et exécutez les répliques via HTTP simple en interne |297| Le développeur voit l'invite de confiance à plusieurs reprises | Le certificat TLS tourne par réplique ou par demande | Utilisez un certificat stable à l'ingress, ou terminez TLS une fois et exécutez les répliques via HTTP simple en interne |

296| CLI `/login` : « Could not verify the gateway's TLS certificate » ou `SELF_SIGNED_CERT_IN_CHAIN` | La chaîne TLS de la passerelle est signée par une CA privée non dans le magasin de confiance de l'hôte CLI | Claude Code lit le magasin de confiance du système d'exploitation par défaut sur le binaire natif et sur Node 22.15 ou ultérieur ; [`CLAUDE_CODE_CERT_STORE`](/fr/network-config#ca-certificate-store) contrôle ce comportement. Si la CA est installée dans le magasin de confiance du système d'exploitation, assurez-vous que les développeurs utilisent un runtime actuel. Sinon, définissez `NODE_EXTRA_CA_CERTS` sur le PEM du certificat CA avant de lancer. L'invite d'empreinte de première connexion s'applique toujours. |298| CLI `/login` : « Could not verify the gateway's TLS certificate » ou `SELF_SIGNED_CERT_IN_CHAIN` | La chaîne TLS de la passerelle est signée par une CA privée non dans le magasin de confiance de l'hôte CLI | Claude Code lit le magasin de confiance du système d'exploitation par défaut sur le binaire natif et sur Node 22.15 ou ultérieur ; [`CLAUDE_CODE_CERT_STORE`](/docs/fr/network-config#ca-certificate-store) contrôle ce comportement. Si la CA est installée dans le magasin de confiance du système d'exploitation, assurez-vous que les développeurs utilisent un runtime actuel. Sinon, définissez `NODE_EXTRA_CA_CERTS` sur le PEM du certificat CA avant de lancer. L'invite d'empreinte de première connexion s'applique toujours. |

297 299 

298<h2 id="related">300<h2 id="related">

299 Connexes301 Connexes

300</h2>302</h2>

301 303 

302* [Aperçu de la passerelle Claude apps](/fr/claude-apps-gateway) : démarrage rapide et connexion des développeurs304* [Aperçu de la passerelle Claude apps](/docs/fr/claude-apps-gateway) : démarrage rapide et connexion des développeurs

303* [Référence de configuration](/fr/claude-apps-gateway-config) : chaque option du fichier `gateway.yaml`305* [Référence de configuration](/docs/fr/claude-apps-gateway-config) : chaque option du fichier `gateway.yaml`

commands.md +78 −78

Details

10 10 

11Tapez `/` pour voir toutes les commandes disponibles pour vous, ou tapez `/` suivi de lettres pour filtrer.11Tapez `/` pour voir toutes les commandes disponibles pour vous, ou tapez `/` suivi de lettres pour filtrer.

12 12 

13Une commande n'est reconnue qu'au début de votre message. Le texte qui suit le nom de la commande lui est transmis en tant qu'arguments. {/* min-version: 2.1.199 */}À partir de la v2.1.199, les [skills](/fr/skills#pass-arguments-to-skills) font exception : une invocation de skill suivie d'autres skills, comme `/skill-a /skill-b do XYZ`, charge chaque skill nommé au début et transmet le texte restant à chacun en tant qu'arguments. Jusqu'à six skills peuvent être chaînés.13Une commande n'est reconnue qu'au début de votre message. Le texte qui suit le nom de la commande lui est transmis en tant qu'arguments. {/* min-version: 2.1.199 */}À partir de la v2.1.199, les [skills](/docs/fr/skills#pass-arguments-to-skills) font exception : une invocation de skill suivie d'autres skills, comme `/skill-a /skill-b do XYZ`, charge chaque skill nommé au début et transmet le texte restant à chacun en tant qu'arguments. Jusqu'à six skills peuvent être chaînés.

14 14 

15Si vous envoyez une commande pendant que Claude répond, elle est mise en file d'attente et s'exécute après la fin du tour actuel. Certaines commandes, telles que `/status`, `/tasks` et `/usage`, s'exécutent immédiatement sans interrompre la réponse.15Si vous envoyez une commande pendant que Claude répond, elle est mise en file d'attente et s'exécute après la fin du tour actuel. Certaines commandes, telles que `/status`, `/tasks` et `/usage`, s'exécutent immédiatement sans interrompre la réponse.

16 16 


20 20 

21La plupart des commandes sont utiles à un moment spécifique d'une session, de la configuration d'un projet à la livraison d'une modification.21La plupart des commandes sont utiles à un moment spécifique d'une session, de la configuration d'un projet à la livraison d'une modification.

22 22 

23**Première session dans un référentiel.** Exécutez `/init` pour générer un `CLAUDE.md` de démarrage, puis `/memory` pour l'affiner. Utilisez `/mcp` pour configurer les serveurs dont le projet a besoin, demandez à Claude de créer les [sous-agents](/fr/sub-agents) que vous souhaitez, et exécutez `/permissions` pour définir vos règles d'approbation.23**Première session dans un référentiel.** Exécutez `/init` pour générer un `CLAUDE.md` de démarrage, puis `/memory` pour l'affiner. Utilisez `/mcp` pour configurer les serveurs dont le projet a besoin, demandez à Claude de créer les [sous-agents](/docs/fr/sub-agents) que vous souhaitez, et exécutez `/permissions` pour définir vos règles d'approbation.

24 24 

25**Pendant une tâche.** `/plan` bascule en mode plan avant une modification importante. `/model` et `/effort` ajustent le modèle que vous utilisez et le raisonnement qu'il applique. Lorsque la conversation devient longue, `/context` montre ce qui remplit la fenêtre et `/compact` la résume pour libérer de l'espace. Utilisez `/btw` pour une remarque rapide qui ne devrait pas s'ajouter à l'historique de la conversation.25**Pendant une tâche.** `/plan` bascule en mode plan avant une modification importante. `/model` et `/effort` ajustent le modèle que vous utilisez et le raisonnement qu'il applique. Lorsque la conversation devient longue, `/context` montre ce qui remplit la fenêtre et `/compact` la résume pour libérer de l'espace. Utilisez `/btw` pour une remarque rapide qui ne devrait pas s'ajouter à l'historique de la conversation.

26 26 

27**Exécution du travail en parallèle.** Claude délègue les tâches secondaires aux [sous-agents](/fr/sub-agents), et `/tasks` répertorie le travail en arrière-plan de la session actuelle, y compris les sous-agents qui ont terminé. `/background` détache la session entière pour continuer à s'exécuter en tant qu'[agent en arrière-plan](/fr/agent-view) et libère votre terminal. Pour une modification importante qui s'étend sur la base de code, `/batch` la décompose en unités indépendantes et exécute chacune dans son propre [worktree](/fr/worktrees). Consultez [Exécuter des agents en parallèle](/fr/agents) pour comprendre comment ces approches se rapportent.27**Exécution du travail en parallèle.** Claude délègue les tâches secondaires aux [sous-agents](/docs/fr/sub-agents), et `/tasks` répertorie le travail en arrière-plan de la session actuelle, y compris les sous-agents qui ont terminé. `/background` détache la session entière pour continuer à s'exécuter en tant qu'[agent en arrière-plan](/docs/fr/agent-view) et libère votre terminal. Pour une modification importante qui s'étend sur la base de code, `/batch` la décompose en unités indépendantes et exécute chacune dans son propre [worktree](/docs/fr/worktrees). Consultez [Exécuter des agents en parallèle](/docs/fr/agents) pour comprendre comment ces approches se rapportent.

28 28 

29**Avant de livrer.** `/diff` montre ce qui a changé, `/code-review` vérifie la diff pour les bugs de correction et les nettoyages et peut appliquer les résultats avec `--fix`, `/review` exécute un examen rapide en lecture seule d'une demande de tirage GitHub, `/code-review <level> <pr#>` exécute un examen multi-agents d'une demande de tirage, et `/security-review` vérifie la diff pour les vulnérabilités de sécurité. `/code-review ultra` exécute un examen multi-agents dans le cloud.29**Avant de livrer.** `/diff` montre ce qui a changé, `/code-review` vérifie la diff pour les bugs de correction et les nettoyages et peut appliquer les résultats avec `--fix`, `/review` exécute un examen rapide en lecture seule d'une demande de tirage GitHub, `/code-review <level> <pr#>` exécute un examen multi-agents d'une demande de tirage, et `/security-review` vérifie la diff pour les vulnérabilités de sécurité. `/code-review ultra` exécute un examen multi-agents dans le cloud.

30 30 


38 38 

39Le tableau ci-dessous répertorie toutes les commandes incluses dans Claude Code. La plupart sont des commandes intégrées dont le comportement est codé dans le CLI. Deux types d'entrées sont marqués :39Le tableau ci-dessous répertorie toutes les commandes incluses dans Claude Code. La plupart sont des commandes intégrées dont le comportement est codé dans le CLI. Deux types d'entrées sont marqués :

40 40 

41* **[Skill](/fr/skills#bundled-skills)** : une skill fournie. Elle fonctionne comme les skills que vous écrivez vous-même : une invite remise à Claude, que Claude peut également invoquer automatiquement si pertinent.41* **[Skill](/docs/fr/skills#bundled-skills)** : une skill fournie. Elle fonctionne comme les skills que vous écrivez vous-même : une invite remise à Claude, que Claude peut également invoquer automatiquement si pertinent.

42* **[Workflow](/fr/workflows#bundled-workflows)** : un [workflow dynamique](/fr/workflows) fourni qui se déploie sur plusieurs sous-agents et s'exécute en arrière-plan.42* **[Workflow](/docs/fr/workflows#bundled-workflows)** : un [workflow dynamique](/docs/fr/workflows) fourni qui se déploie sur plusieurs sous-agents et s'exécute en arrière-plan.

43 43 

44Pour ajouter vos propres commandes, consultez [skills](/fr/skills).44Pour ajouter vos propres commandes, consultez [skills](/docs/fr/skills).

45 45 

46Dans le tableau ci-dessous, `<arg>` indique un argument obligatoire et `[arg]` indique un argument facultatif.46Dans le tableau ci-dessous, `<arg>` indique un argument obligatoire et `[arg]` indique un argument facultatif.

47 47 


51 51 

52| Commande | Objectif |52| Commande | Objectif |

53| :--------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |53| :--------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

54| `/add-dir <path>` | Ajouter un répertoire de travail pour l'accès aux fichiers pendant la session actuelle. La plupart de la configuration `.claude/` [n'est pas découverte](/fr/permissions#additional-directories-grant-file-access-not-configuration) à partir du répertoire ajouté. Vous pouvez ensuite reprendre la session à partir du répertoire ajouté avec `--continue` ou `--resume` |54| `/add-dir <path>` | Ajouter un répertoire de travail pour l'accès aux fichiers pendant la session actuelle. La plupart de la configuration `.claude/` [n'est pas découverte](/docs/fr/permissions#additional-directories-grant-file-access-not-configuration) à partir du répertoire ajouté. Vous pouvez ensuite reprendre la session à partir du répertoire ajouté avec `--continue` ou `--resume` |

55| `/advisor [model\|off]` | Activer ou désactiver l'[outil advisor](/fr/advisor), qui consulte un second modèle pour obtenir des conseils à des moments clés lors d'une tâche. Accepte `opus`, `sonnet`, `fable` ({/* min-version: 2.1.170 */}v2.1.170+), ou un ID de modèle complet. Sans argument, ouvre un sélecteur |55| `/advisor [model\|off]` | Activer ou désactiver l'[outil advisor](/docs/fr/advisor), qui consulte un second modèle pour obtenir des conseils à des moments clés lors d'une tâche. Accepte `opus`, `sonnet`, `fable` ({/* min-version: 2.1.170 */}v2.1.170+), ou un ID de modèle complet. Sans argument, ouvre un sélecteur |

56| `/agents` | {/* min-version: 2.1.198 */}À partir de v2.1.198, exécuter `/agents` affiche un rappel pour demander à Claude de créer ou gérer des [sous-agents](/fr/sub-agents), ou pour modifier `.claude/agents/` ou `~/.claude/agents/` directement. {/* max-version: 2.1.197 */}Sur v2.1.197 et antérieur, ouvre une interface interactive pour créer et gérer les configurations des sous-agents |56| `/agents` | {/* min-version: 2.1.198 */}À partir de v2.1.198, exécuter `/agents` affiche un rappel pour demander à Claude de créer ou gérer des [sous-agents](/docs/fr/sub-agents), ou pour modifier `.claude/agents/` ou `~/.claude/agents/` directement. {/* max-version: 2.1.197 */}Sur v2.1.197 et antérieur, ouvre une interface interactive pour créer et gérer les configurations des sous-agents |

57| `/autofix-pr [prompt]` | Générer une session [Claude Code sur le web](/fr/claude-code-on-the-web#auto-fix-pull-requests) qui surveille la PR de la branche actuelle et pousse les corrections lorsque la CI échoue ou que les relecteurs laissent des commentaires. Détecte la PR ouverte de votre branche extraite avec `gh pr view` ; pour surveiller une PR différente, extrayez d'abord sa branche. Par défaut, la session distante est invitée à corriger chaque échec de CI et commentaire de révision ; passez une invite pour lui donner des instructions différentes, par exemple `/autofix-pr only fix lint and type errors`. Nécessite le CLI `gh` et l'accès à [Claude Code sur le web](/fr/claude-code-on-the-web) |57| `/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 PR de la branche actuelle et pousse les corrections lorsque la CI échoue ou que les relecteurs laissent des commentaires. Détecte la PR ouverte de votre branche extraite avec `gh pr view` ; pour surveiller une PR différente, extrayez d'abord sa branche. Par défaut, la session distante est invitée à corriger chaque échec de CI et commentaire de révision ; passez une invite pour lui donner des instructions différentes, par exemple `/autofix-pr only fix lint and type errors`. Nécessite le CLI `gh` et l'accès à [Claude Code sur le web](/docs/fr/claude-code-on-the-web) |

58| `/background [prompt]` | Détacher la session actuelle pour s'exécuter en tant qu'[agent d'arrière-plan](/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`. Alias : `/bg` |58| `/background [prompt]` | Détacher la session actuelle pour s'exécuter en tant qu'[agent d'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`. Alias : `/bg` |

59| `/batch <instruction>` | **[Skill](/fr/skills#bundled-skills).** Orchestrer des changements à 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 d'arrière-plan](/fr/sub-agents#run-subagents-in-foreground-or-background) par unité dans un [git worktree](/fr/worktrees) isolé. Chaque sous-agent implémente son unité, exécute les tests et ouvre une demande de tirage. Nécessite un référentiel git. Exemple : `/batch migrate src/ from Solid to React` |59| `/batch <instruction>` | **[Skill](/docs/fr/skills#bundled-skills).** Orchestrer des changements à 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 d'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 tirage. Nécessite un référentiel git. Exemple : `/batch migrate src/ from Solid to React` |

60| `/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 confier une tâche secondaire à un sous-agent d'arrière-plan au lieu de basculer dans une copie vous-même, utilisez `/fork` |60| `/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 confier une tâche secondaire à un sous-agent d'arrière-plan au lieu de basculer dans une copie vous-même, utilisez `/fork` |

61| `/btw <question>` | Poser une [question rapide](/fr/interactive-mode#side-questions-with-%2Fbtw) sans l'ajouter à la conversation |61| `/btw <question>` | Poser une [question rapide](/docs/fr/interactive-mode#side-questions-with-%2Fbtw) sans l'ajouter à la conversation |

62| `/cd <path>` | {/* min-version: 2.1.169 */}Déplacer cette session vers un nouveau répertoire de travail. Le cache d'invite de la conversation est préservé : le [`CLAUDE.md`](/fr/memory) du nouveau répertoire est ajouté en tant que message au lieu de reconstruire l'invite système. La session est relocalisée dans le stockage du projet du nouveau répertoire, donc `--resume` et `--continue` le trouvent à partir de là. Vous demande de faire confiance au répertoire si vous n'y avez pas travaillé auparavant. {/* min-version: 2.1.206 */}La saisie d'un chemin partiel affiche les suggestions de répertoire correspondantes ; appuyez sur `Tab` pour en accepter une. Les suggestions nécessitent Claude Code v2.1.206 ou ultérieur. Pour accorder l'accès à un répertoire supplémentaire sans déplacer la session, utilisez `/add-dir`. Restreindre ou désactiver les cibles `/cd` avec les [règles de permission `Cd`](/fr/permissions#cd). Nécessite Claude Code v2.1.169 ou ultérieur ; les versions antérieures signalent `Unknown command: /cd` |62| `/cd <path>` | {/* min-version: 2.1.169 */}Déplacer cette session vers un nouveau répertoire de travail. Le cache d'invite de la conversation est préservé : le [`CLAUDE.md`](/docs/fr/memory) du nouveau répertoire est ajouté en tant que message au lieu de reconstruire l'invite système. La session est relocalisée dans le stockage du projet du nouveau répertoire, donc `--resume` et `--continue` le trouvent à partir de là. Vous demande de faire confiance au répertoire si vous n'y avez pas travaillé auparavant. {/* min-version: 2.1.206 */}La saisie d'un chemin partiel affiche les suggestions de répertoire correspondantes ; appuyez sur `Tab` pour en accepter une. Les suggestions nécessitent Claude Code v2.1.206 ou ultérieur. Pour accorder l'accès à un répertoire supplémentaire sans déplacer la session, utilisez `/add-dir`. Restreindre ou désactiver les cibles `/cd` avec les [règles de permission `Cd`](/docs/fr/permissions#cd). Nécessite Claude Code v2.1.169 ou ultérieur ; les versions antérieures signalent `Unknown command: /cd` |

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

64| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/fr/skills#bundled-skills).** Charger le matériel de référence de l'API Claude pour le langage de votre projet (Python, TypeScript, Java, Go, Ruby, C#, PHP, ou cURL) et la référence des Agents gérés. Couvre l'utilisation d'outils, le streaming, les lots, les sorties structurées et les pièges courants. S'active également automatiquement lorsque votre code importe `anthropic` ou `@anthropic-ai/sdk`. Exécutez `/claude-api migrate` pour mettre à niveau le code existant de l'API Claude vers un modèle plus récent : Claude vous demande quels fichiers analyser et quel modèle cibler, puis met à jour les ID de modèle, la configuration de la réflexion et d'autres paramètres qui ont changé entre les versions. Exécutez `/claude-api managed-agents-onboard` pour une procédure pas à pas interactive qui crée un nouvel Agent géré à partir de zéro |64| `/claude-api [migrate\|managed-agents-onboard]` | **[Skill](/docs/fr/skills#bundled-skills).** Charger le matériel de référence de l'API Claude pour le langage de votre projet (Python, TypeScript, Java, Go, Ruby, C#, PHP, ou cURL) et la référence des Agents gérés. Couvre l'utilisation d'outils, le streaming, les lots, les sorties structurées et les pièges courants. S'active également automatiquement lorsque votre code importe `anthropic` ou `@anthropic-ai/sdk`. Exécutez `/claude-api migrate` pour mettre à niveau le code existant de l'API Claude vers un modèle plus récent : Claude vous demande quels fichiers analyser et quel modèle cibler, puis met à jour les ID de modèle, la configuration de la réflexion et d'autres paramètres qui ont changé entre les versions. Exécutez `/claude-api managed-agents-onboard` pour une procédure pas à pas interactive qui crée un nouvel Agent géré à partir de zéro |

65| `/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. Reprenez la conversation précédente avec `/resume`, ou, dans le même processus Claude Code, {/* min-version: 2.1.191 */}restaurez-la à partir de [l'entrée de session précédente du menu de rembobinage](/fr/checkpointing#rewind-past-a-cleared-conversation). Alias : `/reset`, `/new` |65| `/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. Reprenez la conversation précédente avec `/resume`, ou, dans le même processus Claude Code, {/* min-version: 2.1.191 */}restaurez-la à 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` |

66| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [target]` | **[Skill](/fr/skills#bundled-skills).** Examiner le diff actuel pour les bugs de correction et pour les nettoyages de réutilisation, de simplification et d'efficacité. Passez `--fix` pour appliquer les conclusions à votre arborescence de travail, `--comment` pour les publier en tant que commentaires en ligne sur la PR GitHub, ou `ultra` pour exécuter un [examen cloud](/fr/ultrareview) approfondi. {/* min-version: 2.1.154 */}À partir de v2.1.154, `/simplify` exécute un examen séparé réservé au nettoyage qui applique les corrections sans rechercher les bugs. Consultez [Examiner un diff localement](/fr/code-review#review-a-diff-locally) pour les niveaux d'effort et le ciblage |66| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [target]` | **[Skill](/docs/fr/skills#bundled-skills).** Examiner le diff actuel pour les bugs de correction et pour les nettoyages de réutilisation, de simplification et d'efficacité. Passez `--fix` pour appliquer les conclusions à votre arborescence de travail, `--comment` pour les publier en tant que commentaires en ligne sur la PR GitHub, ou `ultra` pour exécuter un [examen cloud](/docs/fr/ultrareview) approfondi. {/* min-version: 2.1.154 */}À partir de v2.1.154, `/simplify` exécute un examen séparé réservé au nettoyage qui applique les corrections sans rechercher les bugs. Consultez [Examiner un diff localement](/docs/fr/code-review#review-a-diff-locally) pour les niveaux d'effort et le ciblage |

67| `/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](/fr/remote-control) est connecté, la couleur se synchronise avec claude.ai/code. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`) ; nécessite Claude Code v2.1.205 ou ultérieur |67| `/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. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`) ; nécessite Claude Code v2.1.205 ou ultérieur |

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

69| `/config [key=value ...]` | Ouvrir l'interface des [Paramètres](/fr/settings) pour ajuster le thème, le modèle, le [style de sortie](/fr/output-styles) et d'autres préférences. {/* min-version: 2.1.181 */}À partir de v2.1.181, passez une ou plusieurs paires `key=value` pour définir un paramètre directement sans ouvrir l'interface, par exemple `/config thinking=false`. {/* min-version: 2.1.182 */}À partir de v2.1.182, les clés de raccourci nommées sont également acceptées, telles que `/config theme=dark` ou `/config model=sonnet`. La forme `key=value` fonctionne également en mode non interactif (`-p`) et depuis l'application mobile Claude via [Remote Control](/fr/remote-control). Exécutez `/config --help` pour lister chaque clé définissable avec ses options. Alias : `/settings` |69| `/config [key=value ...]` | Ouvrir l'interface des [Paramètres](/docs/fr/settings) pour ajuster le thème, le modèle, le [style de sortie](/docs/fr/output-styles) et d'autres préférences. {/* min-version: 2.1.181 */}À partir de v2.1.181, passez une ou plusieurs paires `key=value` pour définir un paramètre directement sans ouvrir l'interface, par exemple `/config thinking=false`. {/* min-version: 2.1.182 */}À partir de v2.1.182, les clés de raccourci nommées sont également acceptées, telles que `/config theme=dark` ou `/config model=sonnet`. La forme `key=value` fonctionne également en mode non interactif (`-p`) et depuis l'application mobile Claude via [Remote Control](/docs/fr/remote-control). Exécutez `/config --help` pour lister chaque clé définissable avec ses options. Alias : `/settings` |

70| `/context [all]` | Visualiser l'utilisation actuelle du contexte sous forme de grille colorée. Affiche les suggestions d'optimisation pour les outils gourmands en contexte, le surpoids de la mémoire et les avertissements de capacité. En [mode plein écran](/fr/fullscreen), la ventilation par élément est réduite pour garder la grille visible. Passez `all` pour l'étendre |70| `/context [all]` | Visualiser l'utilisation actuelle du contexte sous forme de grille colorée. Affiche les suggestions d'optimisation pour les outils gourmands en contexte, le surpoids de la mémoire et les avertissements de capacité. En [mode plein écran](/docs/fr/fullscreen), la ventilation par élément est réduite pour garder la grille visible. Passez `all` pour l'étendre |

71| `/copy [N]` | Copier la dernière réponse de l'assistant dans le presse-papiers. Passez un nombre `N` pour copier la Nième réponse la plus récente : `/copy 2` copie l'avant-dernière. Lorsque des blocs de code sont présents, affiche un sélecteur interactif pour sélectionner des blocs individuels ou la réponse complète. Appuyez sur `w` dans le sélecteur pour écrire la sélection dans un fichier au lieu du presse-papiers, ce qui est utile via SSH |71| `/copy [N]` | Copier la dernière réponse de l'assistant dans le presse-papiers. Passez un nombre `N` pour copier la Nième réponse la plus récente : `/copy 2` copie l'avant-dernière. Lorsque des blocs de code sont présents, affiche un sélecteur interactif pour sélectionner des blocs individuels ou la réponse complète. Appuyez sur `w` dans le sélecteur pour écrire la sélection dans un fichier au lieu du presse-papiers, ce qui est utile via SSH |

72| `/cost` | Alias pour `/usage` |72| `/cost` | Alias pour `/usage` |

73| `/dataviz [request]` | **[Skill](/fr/skills#bundled-skills).** Conseils de conception pour les graphiques, les diagrammes et les tableaux de bord. Claude choisit la forme de graphique pour les données, assigne la couleur par rôle, valide la palette pour la sécurité des daltoniens et le contraste avec un script fourni, et applique les règles de marque, d'interaction et d'accessibilité. Utilise une palette de marque neutre que vous remplacez par la vôtre. {/* min-version: 2.1.198 */}Nécessite Claude Code v2.1.198 ou ultérieur |73| `/dataviz [request]` | **[Skill](/docs/fr/skills#bundled-skills).** Conseils de conception pour les graphiques, les diagrammes et les tableaux de bord. Claude choisit la forme de graphique pour les données, assigne la couleur par rôle, valide la palette pour la sécurité des daltoniens et le contraste avec un script fourni, et applique les règles de marque, d'interaction et d'accessibilité. Utilise une palette de marque neutre que vous remplacez par la vôtre. {/* min-version: 2.1.198 */}Nécessite Claude Code v2.1.198 ou ultérieur |

74| `/debug [description]` | **[Skill](/fr/skills#bundled-skills).** Activer la journalisation de débogage pour la session actuelle et dépanner les problèmes en lisant le journal de débogage de la session. La journalisation de débogage est désactivée par défaut sauf si vous avez démarré avec `claude --debug`, donc exécuter `/debug` en milieu de session commence à capturer les journaux à partir de ce moment. Décrivez optionnellement le problème pour concentrer l'analyse |74| `/debug [description]` | **[Skill](/docs/fr/skills#bundled-skills).** Activer la journalisation de débogage pour la session actuelle et dépanner les problèmes en lisant le journal de débogage de la session. La journalisation de débogage est désactivée par défaut sauf si vous avez démarré avec `claude --debug`, donc exécuter `/debug` en milieu de session commence à capturer les journaux à partir de ce moment. Décrivez optionnellement le problème pour concentrer l'analyse |

75| `/deep-research <question>` | **[Workflow](/fr/workflows#bundled-workflows).** Déployer des recherches web sur une question, récupérer et vérifier les sources, et synthétiser un rapport cité |75| `/deep-research <question>` | **[Workflow](/docs/fr/workflows#bundled-workflows).** Déployer des recherches web sur une question, récupérer et vérifier les sources, et synthétiser un rapport cité |

76| `/design-login` | Autoriser l'accès au système de conception pour `/design-sync` avec votre compte claude.ai |76| `/design-login` | Autoriser l'accès au système de conception pour `/design-sync` avec votre compte claude.ai |

77| `/design-sync [hint]` | **[Skill](/fr/skills#bundled-skills).** Convertir le système de conception React de votre référentiel et le télécharger vers [Claude Design](https://claude.ai/design), afin que les conceptions qu'il produit utilisent vos vrais composants. Nommez optionnellement le système de conception, par exemple `/design-sync Acme DS`. Une première synchronisation vérifie chaque composant et peut prendre quelques heures sur un grand référentiel. Disponible sur l'API Anthropic ; sur Amazon Bedrock, la plateforme d'agents de Google Cloud, Microsoft Foundry et Claude Platform sur AWS, l'outil sous-jacent ne peut pas atteindre claude.ai, donc la commande n'est pas disponible |77| `/design-sync [hint]` | **[Skill](/docs/fr/skills#bundled-skills).** Convertir le système de conception React de votre référentiel et le télécharger vers [Claude Design](https://claude.ai/design), afin que les conceptions qu'il produit utilisent vos vrais composants. Nommez optionnellement le système de conception, par exemple `/design-sync Acme DS`. Une première synchronisation vérifie chaque composant et peut prendre quelques heures sur un grand référentiel. Disponible sur l'API Anthropic ; sur Amazon Bedrock, la plateforme d'agents de Google Cloud, Microsoft Foundry et Claude Platform sur AWS, l'outil sous-jacent ne peut pas atteindre claude.ai, donc la commande n'est pas disponible |

78| `/desktop` | Continuer la session actuelle dans l'application Claude Code Desktop. Nécessite macOS ou Windows et un abonnement Claude. Alias : `/app` |78| `/desktop` | Continuer la session actuelle dans l'application Claude Code Desktop. Nécessite macOS ou Windows et un abonnement Claude. Alias : `/app` |

79| `/diff` | Ouvrir un visualiseur de diff interactif montrant les modifications non validées et les diffs par tour. Utilisez les flèches gauche/droite pour basculer entre le diff git actuel et les tours Claude individuels, et haut/bas pour parcourir les fichiers. Appuyez sur Entrée pour ouvrir le diff du fichier sélectionné, faites-le défiler avec haut/bas ou PageUp/PageDown, et appuyez sur Échap pour revenir à la liste des fichiers. {/* min-version: 2.1.198 */}À partir de v2.1.198, le visualiseur ouvert se rafraîchit également automatiquement lorsque l'état git du référentiel change en dehors de la session, comme un changement de branche ou un commit dans un autre terminal |79| `/diff` | Ouvrir un visualiseur de diff interactif montrant les modifications non validées et les diffs par tour. Utilisez les flèches gauche/droite pour basculer entre le diff git actuel et les tours Claude individuels, et haut/bas pour parcourir les fichiers. Appuyez sur Entrée pour ouvrir le diff du fichier sélectionné, faites-le défiler avec haut/bas ou PageUp/PageDown, et appuyez sur Échap pour revenir à la liste des fichiers. {/* min-version: 2.1.198 */}À partir de v2.1.198, le visualiseur ouvert se rafraîchit également automatiquement lorsque l'état git du référentiel change en dehors de la session, comme un changement de branche ou un commit dans un autre terminal |

80| `/doctor` | **[Skill](/fr/skills#bundled-skills).** Exécuter une vérification de configuration qui diagnostique les problèmes et peut les corriger. Vérifie la santé de l'installation, y compris les installations dupliquées ou résiduelles, les problèmes de `PATH` et les fichiers de paramètres non analysables. Trouve les skills inutilisés, les serveurs MCP et les plugins par rapport à leur coût en contexte, signale les [hooks](/fr/hooks) lents et vérifie une version plus récente sur votre canal de version. Déduplique les fichiers `CLAUDE.md` locaux par rapport aux fichiers archivés, réduit les fichiers [`CLAUDE.md`](/fr/memory) archivés en coupant le contenu que Claude pourrait dériver de la base de code, et migre les conseils toujours chargés dans les [skills](/fr/skills) et les fichiers `CLAUDE.md` imbriqués qui se chargent à la demande. La réduction coupe les sections telles que les dispositions de répertoires, les listes de dépendances et les aperçus d'architecture, et conserve les pièges, la justification et les conventions qui diffèrent des valeurs par défaut des outils. Offre également de faire du [mode automatique](/fr/permissions#permission-modes) votre défaut et de [pré-approuver](/fr/permissions) les commandes en lecture seule fréquemment refusées. Signale les conclusions en premier et demande une confirmation avant de modifier quoi que ce soit. Depuis le terminal, `claude doctor` affiche les diagnostics d'installation en lecture seule sans démarrer une session. Alias : `/checkup`. {/* min-version: 2.1.206 */}La vérification de réduction `CLAUDE.md` nécessite Claude Code v2.1.206 ou ultérieur. Avant v2.1.206, la vérification de version comparait les installations Homebrew par rapport au paramètre `autoUpdatesChannel` plutôt que le [canal du cask installé](/fr/setup#configure-release-channel). {/* min-version: 2.1.205 */}Avant v2.1.205, `/doctor` ouvrait un écran de diagnostics en lecture seule et appuyer sur `f` envoyait le rapport à Claude |80| `/doctor` | **[Skill](/docs/fr/skills#bundled-skills).** Exécuter une vérification de configuration qui diagnostique les problèmes et peut les corriger. Vérifie la santé de l'installation, y compris les installations dupliquées ou résiduelles, les problèmes de `PATH` et les fichiers de paramètres non analysables. Trouve les skills inutilisés, les serveurs MCP et les plugins par rapport à leur coût en contexte, signale les [hooks](/docs/fr/hooks) lents et vérifie une version plus récente sur votre canal de version. Déduplique les fichiers `CLAUDE.md` locaux par rapport aux fichiers archivés, réduit les fichiers [`CLAUDE.md`](/docs/fr/memory) archivés en coupant le contenu que Claude pourrait dériver de la base de code, et migre les conseils toujours chargés dans les [skills](/docs/fr/skills) et les fichiers `CLAUDE.md` imbriqués qui se chargent à la demande. La réduction coupe les sections telles que les dispositions de répertoires, les listes de dépendances et les aperçus d'architecture, et conserve les pièges, la justification et les conventions qui diffèrent des valeurs par défaut des outils. Offre également de faire du [mode automatique](/docs/fr/permissions#permission-modes) votre défaut et de [pré-approuver](/docs/fr/permissions) les commandes en lecture seule fréquemment refusées. Signale les conclusions en premier et demande une confirmation avant de modifier quoi que ce soit. Depuis le terminal, `claude doctor` affiche les diagnostics d'installation en lecture seule sans démarrer une session. Alias : `/checkup`. {/* min-version: 2.1.206 */}La vérification de réduction `CLAUDE.md` nécessite Claude Code v2.1.206 ou ultérieur. Avant v2.1.206, la vérification de version comparait les installations Homebrew par rapport au paramètre `autoUpdatesChannel` plutôt que le [canal du cask installé](/docs/fr/setup#configure-release-channel). {/* min-version: 2.1.205 */}Avant v2.1.205, `/doctor` ouvrait un écran de diagnostics en lecture seule et appuyer sur `f` envoyait le rapport à Claude |

81| `/effort [level\|auto]` | Définir le [niveau d'effort](/fr/model-config#adjust-effort-level) du modèle. Accepte `low`, `medium`, `high`, `xhigh`, `max`, ou `ultracode` ; les niveaux disponibles dépendent du modèle, et `max` et `ultracode` sont limités à la session. `ultracode` est un paramètre Claude Code qui combine le raisonnement `xhigh` avec l'orchestration automatique du [workflow](/fr/workflows#let-claude-decide-with-ultracode). `auto` réinitialise à la valeur par défaut du modèle. Sans argument, ouvre un curseur interactif ; utilisez les flèches gauche et droite pour choisir un niveau et `Entrée` pour appliquer. Prend effet immédiatement sans attendre la fin de la réponse actuelle. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`) avec un argument de niveau, où il s'applique uniquement à la session actuelle et n'est pas enregistré comme valeur par défaut ; nécessite Claude Code v2.1.205 ou ultérieur. Sur Fable 5, Opus 4.8 et Opus 4.7, un `/effort` non interactif signale `Not applied` pendant que la [retenue d'effort par défaut du modèle](/fr/model-config#adjust-effort-level) est en vigueur, donc passez `--effort` au lancement à la place |81| `/effort [level\|auto]` | Définir le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) du modèle. Accepte `low`, `medium`, `high`, `xhigh`, `max`, ou `ultracode` ; les niveaux disponibles dépendent du modèle, et `max` et `ultracode` sont limités à la session. `ultracode` est un paramètre Claude Code qui combine le raisonnement `xhigh` avec l'orchestration automatique du [workflow](/docs/fr/workflows#let-claude-decide-with-ultracode). `auto` réinitialise à la valeur par défaut du modèle. Sans argument, ouvre un curseur interactif ; utilisez les flèches gauche et droite pour choisir un niveau et `Entrée` pour appliquer. Prend effet immédiatement sans attendre la fin de la réponse actuelle. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`) avec un argument de niveau, où il s'applique uniquement à la session actuelle et n'est pas enregistré comme valeur par défaut ; nécessite Claude Code v2.1.205 ou ultérieur. Sur Fable 5, Opus 4.8 et Opus 4.7, un `/effort` non interactif signale `Not applied` pendant que la [retenue d'effort par défaut du modèle](/docs/fr/model-config#adjust-effort-level) est en vigueur, donc passez `--effort` au lancement à la place |

82| `/exit` | Quitter le CLI. Dans une [session d'arrière-plan](/fr/agent-view#attach-to-a-session) attachée, cela détache et la session continue de s'exécuter. Alias : `/quit` |82| `/exit` | Quitter le CLI. Dans une [session d'arrière-plan](/docs/fr/agent-view#attach-to-a-session) attachée, cela détache et la session continue de s'exécuter. Alias : `/quit` |

83| `/export [filename]` | Exporter la conversation actuelle en texte brut. Avec un nom de fichier, écrit directement dans ce fichier. Sans, ouvre une boîte de dialogue pour copier dans le presse-papiers ou enregistrer dans un fichier |83| `/export [filename]` | Exporter la conversation actuelle en texte brut. Avec un nom de fichier, écrit directement dans ce fichier. Sans, ouvre une boîte de dialogue pour copier dans le presse-papiers ou enregistrer dans un fichier |

84| `/fast [on\|off]` | Activer ou désactiver le [mode rapide](/fr/fast-mode). {/* min-version: 2.1.205 */}En mode non interactif (`-p`), `/fast` fonctionne uniquement dans une session lancée avec le mode rapide dans sa valeur [`--settings`](/fr/cli-reference#cli-flags), par exemple `claude -p --settings '{"fastMode": true}'` ; le basculement s'applique alors uniquement à la session actuelle et n'est pas enregistré comme valeur par défaut, et dans toute autre session non interactive, la commande signale que le mode rapide n'est pas disponible. Nécessite Claude Code v2.1.205 ou ultérieur |84| `/fast [on\|off]` | Activer ou désactiver le [mode rapide](/docs/fr/fast-mode). {/* min-version: 2.1.205 */}En mode non interactif (`-p`), `/fast` fonctionne uniquement dans une session lancée avec le mode rapide dans sa valeur [`--settings`](/docs/fr/cli-reference#cli-flags), par exemple `claude -p --settings '{"fastMode": true}'` ; le basculement s'applique alors uniquement à la session actuelle et n'est pas enregistré comme valeur par défaut, et dans toute autre session non interactive, la commande signale que le mode rapide n'est pas disponible. Nécessite Claude Code v2.1.205 ou ultérieur |

85| `/feedback [report]` | Soumettre des commentaires, signaler un bogue ou partager votre conversation. L'envoi à Anthropic nécessite l'[authentification](/fr/authentication). Alias : `/bug`, `/share` |85| `/feedback [report]` | Soumettre des commentaires, signaler un bogue ou partager votre conversation. L'envoi à Anthropic nécessite l'[authentification](/docs/fr/authentication). Alias : `/bug`, `/share` |

86| `/fewer-permission-prompts` | **[Skill](/fr/skills#bundled-skills).** Analyser vos transcriptions pour les appels d'outils Bash et MCP en lecture seule courants, puis ajouter une liste d'autorisation priorisée au fichier `.claude/settings.json` du projet pour réduire les invites de permission |86| `/fewer-permission-prompts` | **[Skill](/docs/fr/skills#bundled-skills).** Analyser vos transcriptions pour les appels d'outils Bash et MCP en lecture seule courants, puis ajouter une liste d'autorisation priorisée au fichier `.claude/settings.json` du projet pour réduire les invites de permission |

87| `/focus` | Activer/désactiver la vue de focus, qui affiche uniquement votre dernière invite, un résumé d'appel d'outil d'une ligne avec les statistiques de diff d'édition, et la réponse finale. {/* min-version: 2.1.198 */}À partir de v2.1.198, le résumé d'appel d'outil compte également les sous-agents lancés dans le tour et réduit les notifications de tâche d'arrière-plan terminées en un seul décompte. La sélection persiste entre les sessions ; définissez [`viewMode`](/fr/settings#available-settings) dans les paramètres pour la remplacer. Disponible uniquement dans le [rendu en plein écran](/fr/fullscreen) |87| `/focus` | Activer/désactiver la vue de focus, qui affiche uniquement votre dernière invite, un résumé d'appel d'outil d'une ligne avec les statistiques de diff d'édition, et la réponse finale. {/* min-version: 2.1.198 */}À partir de v2.1.198, le résumé d'appel d'outil compte également les sous-agents lancés dans le tour et réduit les notifications de tâche d'arrière-plan terminées en un seul décompte. La sélection persiste entre les sessions ; définissez [`viewMode`](/docs/fr/settings#available-settings) dans les paramètres pour la remplacer. Disponible uniquement dans le [rendu en plein écran](/docs/fr/fullscreen) |

88| `/fork <directive>` | {/* min-version: 2.1.161 */}Générer un [sous-agent forké](/fr/sub-agents#fork-the-current-conversation) : un sous-agent d'arrière-plan qui hérite de la conversation complète et travaille sur la directive pendant que vous continuez. Son résultat revient à votre conversation lorsqu'il se termine. Pour basculer dans une copie de la conversation vous-même, utilisez `/branch`. Avant v2.1.161, `/fork` est un alias pour `/branch` |88| `/fork <directive>` | {/* min-version: 2.1.161 */}Générer un [sous-agent forké](/docs/fr/sub-agents#fork-the-current-conversation) : un sous-agent d'arrière-plan qui hérite de la conversation complète et travaille sur la directive pendant que vous continuez. Son résultat revient à votre conversation lorsqu'il se termine. Pour basculer dans une copie de la conversation vous-même, utilisez `/branch`. Avant v2.1.161, `/fork` est un alias pour `/branch` |

89| `/goal [condition\|clear]` | Définir un [objectif](/fr/goal) : Claude continue à travailler entre les tours jusqu'à ce que la condition soit remplie. Sans argument, affiche l'objectif actuel ou le plus récemment atteint. `clear`, `stop`, `off`, `reset`, `none`, ou `cancel` supprime un objectif actif plus tôt |89| `/goal [condition\|clear]` | Définir un [objectif](/docs/fr/goal) : Claude continue à travailler entre les tours jusqu'à ce que la condition soit remplie. Sans argument, affiche l'objectif actuel ou le plus récemment atteint. `clear`, `stop`, `off`, `reset`, `none`, ou `cancel` supprime un objectif actif plus tôt |

90| `/heapdump` | Écrire un snapshot de tas JavaScript et une ventilation de la mémoire vers `~/Desktop`, ou votre répertoire personnel sur Linux sans dossier Desktop, pour diagnostiquer une utilisation élevée de la mémoire. Consultez le [dépannage](/fr/troubleshooting#high-cpu-or-memory-usage) |90| `/heapdump` | Écrire un snapshot de tas JavaScript et une ventilation de la mémoire vers `~/Desktop`, ou votre répertoire personnel sur Linux sans dossier Desktop, pour diagnostiquer une utilisation élevée de la mémoire. Le fichier `.heapsnapshot` contient votre conversation complète et vos identifiants, donc ne le partagez pas. Consultez le [dépannage](/docs/fr/troubleshooting#high-cpu-or-memory-usage) |

91| `/help` | Afficher l'aide et les commandes disponibles |91| `/help` | Afficher l'aide et les commandes disponibles |

92| `/hooks` | Afficher les configurations des [hooks](/fr/hooks) pour les événements d'outils |92| `/hooks` | Afficher les configurations des [hooks](/docs/fr/hooks) pour les événements d'outils |

93| `/ide` | Gérer les intégrations IDE et afficher l'état |93| `/ide` | Gérer les intégrations IDE et afficher l'état |

94| `/init` | Initialiser le projet avec un guide `CLAUDE.md`. Définissez `CLAUDE_CODE_NEW_INIT=1` pour un flux interactif qui vous guide également à travers les skills, les hooks et les fichiers de mémoire personnelle |94| `/init` | Initialiser le projet avec un guide `CLAUDE.md`. Définissez `CLAUDE_CODE_NEW_INIT=1` pour un flux interactif qui vous guide également à travers les skills, les hooks et les fichiers de mémoire personnelle |

95| `/insights` | Générer un rapport analysant vos sessions Claude Code, y compris les domaines de projet, les modèles d'interaction et les points de friction |95| `/insights` | Générer un rapport analysant vos sessions Claude Code, y compris les domaines de projet, les modèles d'interaction et les points de friction |

96| `/install-github-app` | Installer l'application Claude GitHub pour un référentiel, avec une étape optionnelle pour configurer les workflows [GitHub Actions](/fr/github-actions) et les secrets. Vous guide dans la sélection d'un référentiel et la configuration de l'intégration |96| `/install-github-app` | Installer l'application Claude GitHub pour un référentiel, avec une étape optionnelle pour configurer les workflows [GitHub Actions](/docs/fr/github-actions) et les secrets. Vous guide dans la sélection d'un référentiel et la configuration de l'intégration |

97| `/install-slack-app` | Installer l'application Claude Slack. Ouvre un navigateur pour terminer le flux OAuth |97| `/install-slack-app` | Installer l'application Claude Slack. Ouvre un navigateur pour terminer le flux OAuth |

98| `/keybindings` | Ouvrir votre fichier de [raccourcis clavier](/fr/keybindings) |98| `/keybindings` | Ouvrir votre fichier de [raccourcis clavier](/docs/fr/keybindings) |

99| `/login` | Se connecter à votre compte Anthropic |99| `/login` | Se connecter à votre compte Anthropic |

100| `/logout` | Se déconnecter de votre compte Anthropic |100| `/logout` | Se déconnecter de votre compte Anthropic |

101| `/loop [interval] [prompt]` | **[Skill](/fr/skills#bundled-skills).** Exécuter une invite à plusieurs reprises pendant que la session reste ouverte. Omettez l'intervalle et Claude s'auto-règle entre les itérations. Omettez l'invite et, [où disponible](/fr/scheduled-tasks#run-the-built-in-maintenance-prompt), Claude exécute une vérification de maintenance autonome ou l'invite dans `.claude/loop.md`. Exemple : `/loop 5m check if the deploy finished`. Consultez [Exécuter des invites selon un calendrier](/fr/scheduled-tasks). Alias : `/proactive` |101| `/loop [interval] [prompt]` | **[Skill](/docs/fr/skills#bundled-skills).** Exécuter une invite à plusieurs reprises pendant que la session reste ouverte. Omettez l'intervalle et Claude s'auto-règle entre les itérations. Omettez l'invite et, [où disponible](/docs/fr/scheduled-tasks#run-the-built-in-maintenance-prompt), Claude exécute une vérification de maintenance autonome ou l'invite dans `.claude/loop.md`. Exemple : `/loop 5m check if the deploy finished`. Consultez [Exécuter des invites selon un calendrier](/docs/fr/scheduled-tasks). Alias : `/proactive` |

102| `/mcp [reconnect <server>\|enable\|disable [<server>\|all]]` | Gérer les connexions aux serveurs MCP et l'authentification OAuth. Exécutez sans argument pour ouvrir la liste interactive, passez `reconnect <server>` pour reconnecter un serveur déconnecté, ou passez `enable`/`disable` avec un nom de serveur ou `all` pour modifier l'état de la connexion sans ouvrir la boîte de dialogue. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`), où l'exécuter sans argument affiche un résumé textuel de l'état du serveur au lieu d'ouvrir la liste ; nécessite Claude Code v2.1.205 ou ultérieur |102| `/mcp [reconnect <server>\|enable\|disable [<server>\|all]]` | Gérer les connexions aux serveurs MCP et l'authentification OAuth. Exécutez sans argument pour ouvrir la liste interactive, passez `reconnect <server>` pour reconnecter un serveur déconnecté, ou passez `enable`/`disable` avec un nom de serveur ou `all` pour modifier l'état de la connexion sans ouvrir la boîte de dialogue. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`), où l'exécuter sans argument affiche un résumé textuel de l'état du serveur au lieu d'ouvrir la liste ; nécessite Claude Code v2.1.205 ou ultérieur |

103| `/memory` | Modifier les fichiers de mémoire `CLAUDE.md`, activer ou désactiver la [mémoire automatique](/fr/memory#auto-memory) et afficher les entrées de mémoire automatique |103| `/memory` | Modifier les fichiers de mémoire `CLAUDE.md`, activer ou désactiver la [mémoire automatique](/docs/fr/memory#auto-memory) et afficher les entrées de mémoire automatique |

104| `/mobile` | Afficher le code QR pour télécharger l'application mobile Claude. Alias : `/ios`, `/android` |104| `/mobile` | Afficher le code QR pour télécharger l'application mobile Claude. Alias : `/ios`, `/android` |

105| `/model [model]` | Basculer le modèle IA et l'enregistrer comme valeur par défaut pour les nouvelles sessions. Pour les modèles qui le supportent, utilisez les flèches gauche/droite pour [ajuster le niveau d'effort](/fr/model-config#adjust-effort-level). Sans argument, ouvre un sélecteur ; appuyez sur `s` sur une ligne pour basculer uniquement pour la session actuelle. Le sélecteur demande une confirmation lorsque la conversation a une sortie antérieure, car la réponse suivante relit l'historique complet sans contexte en cache. Une fois confirmé, le changement s'applique sans attendre la fin de la réponse actuelle. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`) avec un argument de modèle au lieu du sélecteur, où il s'applique uniquement à la session actuelle et n'est pas enregistré comme valeur par défaut ; nécessite Claude Code v2.1.205 ou ultérieur |105| `/model [model]` | Basculer le modèle IA et l'enregistrer comme valeur par défaut pour les nouvelles sessions. Pour les modèles qui le supportent, utilisez les flèches gauche/droite pour [ajuster le niveau d'effort](/docs/fr/model-config#adjust-effort-level). Sans argument, ouvre un sélecteur ; appuyez sur `s` sur une ligne pour basculer uniquement pour la session actuelle. Le sélecteur demande une confirmation lorsque la conversation a une sortie antérieure, car la réponse suivante relit l'historique complet sans contexte en cache. Une fois confirmé, le changement s'applique sans attendre la fin de la réponse actuelle. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`) avec un argument de modèle au lieu du sélecteur, où il s'applique uniquement à la session actuelle et n'est pas enregistré comme valeur par défaut ; nécessite Claude Code v2.1.205 ou ultérieur |

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

107| `/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 en mode automatique récents](/fr/auto-mode-config#review-denials). Alias : `/allowed-tools` |107| `/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 en mode automatique récents](/docs/fr/auto-mode-config#review-denials). Alias : `/allowed-tools` |

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

109| `/plugin [subcommand]` | Gérer les [plugins](/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 |109| `/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 |

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

111| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}Supprimé dans v2.1.91. Demandez à Claude directement de consulter les commentaires de demande de tirage à la place. Sur les versions antérieures, récupère et affiche les commentaires d'une demande de tirage GitHub ; détecte automatiquement la PR pour la branche actuelle, ou passez une URL ou un numéro de PR. Nécessite le CLI `gh` |111| `/pr-comments [PR]` | {/* max-version: 2.1.90 */}Supprimé dans v2.1.91. Demandez à Claude directement de consulter les commentaires de demande de tirage à la place. Sur les versions antérieures, récupère et affiche les commentaires d'une demande de tirage GitHub ; détecte automatiquement la PR pour la branche actuelle, ou passez une URL ou un numéro de PR. Nécessite le CLI `gh` |

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

113| `/radio` | Ouvrir Claude FM lo-fi radio dans votre navigateur. Affiche l'URL du flux lorsqu'aucun navigateur n'est disponible. Non disponible sur Amazon Bedrock, la plateforme d'agents de Google Cloud, Microsoft Foundry ou Claude Platform sur AWS |113| `/radio` | Ouvrir Claude FM lo-fi radio dans votre navigateur. Affiche l'URL du flux lorsqu'aucun navigateur n'est disponible. Non disponible sur Amazon Bedrock, la plateforme d'agents de Google Cloud, Microsoft Foundry ou Claude Platform sur AWS |

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

115| `/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. {/* min-version: 2.1.208 */}Les notes apparaissent dans votre transcription sans entrer dans la conversation que Claude voit. Avant v2.1.208, les notes consultées entraient dans la conversation, y compris l'intégralité du journal des modifications lors de l'affichage de toutes les versions |115| `/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. {/* min-version: 2.1.208 */}Les notes apparaissent dans votre transcription sans entrer dans la conversation que Claude voit. Avant v2.1.208, les notes consultées entraient dans la conversation, y compris l'intégralité du journal des modifications lors de l'affichage de toutes les versions |

116| `/reload-plugins [--force]` | Recharger tous les [plugins](/fr/plugins) actifs pour appliquer les modifications en attente sans redémarrer. Signale les comptages 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` |116| `/reload-plugins [--force]` | Recharger tous les [plugins](/docs/fr/plugins) actifs pour appliquer les modifications en attente sans redémarrer. Signale les comptages 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` |

117| `/reload-skills` | {/* min-version: 2.1.152 */}Réanalyser les répertoires de [skills](/fr/skills) et de commandes afin que les skills ajoutés ou modifiés sur le disque pendant la session deviennent disponibles sans redémarrer. Signale le nombre de skills disponibles et le nombre de skills ajoutés ou supprimés. Ajouté dans v2.1.152 |117| `/reload-skills` | {/* min-version: 2.1.152 */}Réanalyser les répertoires de [skills](/docs/fr/skills) et de commandes afin que les skills ajoutés ou modifiés sur le disque pendant la session deviennent disponibles sans redémarrer. Signale le nombre de skills disponibles et le nombre de skills ajoutés ou supprimés. Ajouté dans v2.1.152 |

118| `/remote-control` | Rendre cette session disponible pour le [contrôle à distance](/fr/remote-control) depuis claude.ai. {/* min-version: 2.1.206 */}L'exécuter alors que vous êtes déconnecté affiche que Remote Control nécessite un abonnement claude.ai et vous indique comment vous connecter ; avant v2.1.206, il signalait `Unknown command: /remote-control`. Alias : `/rc` |118| `/remote-control` | Rendre cette session disponible pour le [contrôle à distance](/docs/fr/remote-control) depuis claude.ai. {/* min-version: 2.1.206 */}L'exécuter alors que vous êtes déconnecté affiche que Remote Control nécessite un abonnement claude.ai et vous indique comment vous connecter ; avant v2.1.206, il signalait `Unknown command: /remote-control`. Alias : `/rc` |

119| `/remote-env` | Choisir l'environnement par défaut pour les [agents cloud](/fr/claude-code-on-the-web#configure-your-environment) |119| `/remote-env` | Choisir l'environnement par défaut pour les [agents cloud](/docs/fr/claude-code-on-the-web#configure-your-environment) |

120| `/rename [name]` | Renommer la session actuelle et afficher le nom sur la barre d'invite. Sans nom, génère automatiquement un à partir de l'historique de la conversation. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`) ; nécessite Claude Code v2.1.205 ou ultérieur |120| `/rename [name]` | Renommer la session actuelle et afficher le nom sur la barre d'invite. Sans nom, génère automatiquement un à partir de l'historique de la conversation. {/* min-version: 2.1.205 */}Également disponible en mode non interactif (`-p`) ; nécessite Claude Code v2.1.205 ou ultérieur |

121| `/resume [session]` | Reprendre une conversation par ID ou nom, ou ouvrir le sélecteur de session. À partir de v2.1.144, les [sessions d'arrière-plan](/fr/agent-view) apparaissent dans le sélecteur marquées avec `bg` ; une qui est encore en cours d'exécution ne peut pas être reprise ici, donc attachez-vous à partir de `claude agents` ou arrêtez-la d'abord. Alias : `/continue` |121| `/resume [session]` | Reprendre une conversation par ID ou nom, ou ouvrir le sélecteur de session. À partir de v2.1.144, les [sessions d'arrière-plan](/docs/fr/agent-view) apparaissent dans le sélecteur marquées avec `bg` ; une qui est encore en cours d'exécution ne peut pas être reprise ici, donc attachez-vous à partir de `claude agents` ou arrêtez-la d'abord. Alias : `/continue` |

122| `/review [PR]` | {/* min-version: 2.1.202 */}Exécuter un examen rapide en une seule passe et en lecture seule d'une demande de tirage GitHub par numéro. Sans argument, répertorie les PR ouvertes à sélectionner ; le texte après le numéro de PR devient des instructions d'examen supplémentaires. De v2.1.186 à v2.1.201, `/review` exécutait plutôt le même moteur multi-agents que `/code-review medium`. Pour un examen multi-agents à un niveau d'effort choisi, utilisez [`/code-review <level> <pr#>`](/fr/code-review#review-a-diff-locally) ; pour un examen basé sur le cloud, consultez [`/code-review ultra`](/fr/ultrareview) |122| `/review [PR]` | {/* min-version: 2.1.202 */}Exécuter un examen rapide en une seule passe et en lecture seule d'une demande de tirage GitHub par numéro. Sans argument, répertorie les PR ouvertes à sélectionner ; le texte après le numéro de PR devient des instructions d'examen supplémentaires. De v2.1.186 à v2.1.201, `/review` exécutait plutôt le même moteur multi-agents que `/code-review medium`. Pour un examen multi-agents à un niveau d'effort choisi, utilisez [`/code-review <level> <pr#>`](/docs/fr/code-review#review-a-diff-locally) ; pour un examen basé sur le cloud, consultez [`/code-review ultra`](/docs/fr/ultrareview) |

123| `/rewind` | Rembobiner la conversation et/ou le code à un point antérieur, ou résumer à partir d'un message sélectionné. Consultez [checkpointing](/fr/checkpointing). Alias : `/checkpoint`, `/undo` |123| `/rewind` | Rembobiner la conversation et/ou le code à un point antérieur, ou résumer à partir d'un message sélectionné. Consultez [checkpointing](/docs/fr/checkpointing). Alias : `/checkpoint`, `/undo` |

124| `/run` | **[Skill](/fr/skills#bundled-skills).** Lancer et piloter l'application de votre projet pour voir un changement fonctionner dans l'application en cours d'exécution, pas seulement dans les tests. Consultez [Exécuter et vérifier votre application](/fr/skills#run-and-verify-your-app). {/* min-version: 2.1.145 */}Nécessite Claude Code v2.1.145 ou ultérieur |124| `/run` | **[Skill](/docs/fr/skills#bundled-skills).** Lancer et piloter l'application de votre projet pour voir un changement fonctionner dans l'application en cours d'exécution, pas seulement dans les tests. Consultez [Exécuter et vérifier votre application](/docs/fr/skills#run-and-verify-your-app). {/* min-version: 2.1.145 */}Nécessite Claude Code v2.1.145 ou ultérieur |

125| `/run-skill-generator` | **[Skill](/fr/skills#bundled-skills).** Enseigner à `/run` et `/verify` comment construire, lancer et piloter l'application de votre projet à partir d'un environnement propre en écrivant un [skill](/fr/skills#run-and-verify-your-app) par projet. {/* min-version: 2.1.145 */}Nécessite Claude Code v2.1.145 ou ultérieur |125| `/run-skill-generator` | **[Skill](/docs/fr/skills#bundled-skills).** Enseigner à `/run` et `/verify` comment construire, lancer et piloter l'application de votre projet à partir d'un environnement propre en écrivant un [skill](/docs/fr/skills#run-and-verify-your-app) par projet. {/* min-version: 2.1.145 */}Nécessite Claude Code v2.1.145 ou ultérieur |

126| `/sandbox` | Activer/désactiver le [mode sandbox](/fr/sandboxing). Disponible sur les plateformes supportées uniquement |126| `/sandbox` | Activer/désactiver le [mode sandbox](/docs/fr/sandboxing). Disponible sur les plateformes supportées uniquement |

127| `/schedule [description]` | Créer, mettre à jour, lister ou exécuter des [routines](/fr/routines), qui s'exécutent sur l'infrastructure cloud gérée par Anthropic. Claude vous guide à travers la configuration de manière conversationnelle. Alias : `/routines` |127| `/schedule [description]` | Créer, mettre à jour, lister ou exécuter des [routines](/docs/fr/routines), qui s'exécutent sur l'infrastructure cloud gérée par Anthropic. Claude vous guide à travers la configuration de manière conversationnelle. Alias : `/routines` |

128| `/scroll-speed` | Ajuster la [vitesse de défilement](/fr/fullscreen#mouse-wheel-scrolling) de la molette de la souris de manière interactive, avec une règle que vous pouvez faire défiler pendant que la boîte de dialogue est ouverte pour prévisualiser le changement. Disponible uniquement dans le [rendu en plein écran](/fr/fullscreen) et non dans le terminal de l'IDE JetBrains |128| `/scroll-speed` | Ajuster la [vitesse de défilement](/docs/fr/fullscreen#mouse-wheel-scrolling) de la molette de la souris de manière interactive, avec une règle que vous pouvez faire défiler pendant que la boîte de dialogue est ouverte pour prévisualiser le changement. Disponible uniquement dans le [rendu en plein écran](/docs/fr/fullscreen) et non dans le terminal de l'IDE JetBrains |

129| `/security-review` | Analyser les modifications en attente sur la branche actuelle pour les vulnérabilités de sécurité. Examine le diff git et identifie les risques comme l'injection, les problèmes d'authentification et l'exposition de données |129| `/security-review` | Analyser les modifications en attente sur la branche actuelle pour les vulnérabilités de sécurité. Examine le diff git et identifie les risques comme l'injection, les problèmes d'authentification et l'exposition de données |

130| `/setup-bedrock` | Configurer l'authentification [Amazon Bedrock](/fr/amazon-bedrock), la région et les épingles de modèle via un assistant interactif. Visible uniquement lorsque `CLAUDE_CODE_USE_BEDROCK=1` est défini. Les utilisateurs de Bedrock pour la première fois peuvent également accéder à cet assistant à partir de l'écran de connexion |130| `/setup-bedrock` | Configurer l'authentification [Amazon Bedrock](/docs/fr/amazon-bedrock), la région et les épingles de modèle via un assistant interactif. Visible uniquement lorsque `CLAUDE_CODE_USE_BEDROCK=1` est défini. Les utilisateurs de Bedrock pour la première fois peuvent également accéder à cet assistant à partir de l'écran de connexion |

131| `/setup-vertex` | Configurer l'authentification [Google Cloud's Agent Platform](/fr/google-vertex-ai), le projet, la région et les épingles de modèle via un assistant interactif. Visible uniquement lorsque `CLAUDE_CODE_USE_VERTEX=1` est défini. Les utilisateurs de Google Cloud's Agent Platform pour la première fois peuvent également accéder à cet assistant à partir de l'écran de connexion |131| `/setup-vertex` | Configurer l'authentification [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai), le projet, la région et les épingles de modèle via un assistant interactif. Visible uniquement lorsque `CLAUDE_CODE_USE_VERTEX=1` est défini. Les utilisateurs de Google Cloud's Agent Platform pour la première fois peuvent également accéder à cet assistant à partir de l'écran de connexion |

132| `/simplify [target]` | {/* min-version: 2.1.154 */}**[Skill](/fr/skills#bundled-skills).** Examiner le code modifié pour les opportunités de nettoyage et appliquer les corrections. Quatre [agents](/fr/sub-agents) d'examen s'exécutent en parallèle, couvrant la réutilisation des assistants existants, la simplification, l'efficacité et si le changement se situe au bon niveau d'abstraction. À partir de v2.1.154, l'examen ne recherche pas les bugs de correction. Utilisez `/code-review` pour trouver les bugs. Sur les versions antérieures, `/simplify` est équivalent à `/code-review --fix`. Passez un chemin ou une référence PR pour examiner une cible spécifique |132| `/simplify [target]` | {/* min-version: 2.1.154 */}**[Skill](/docs/fr/skills#bundled-skills).** Examiner le code modifié pour les opportunités de nettoyage et appliquer les corrections. Quatre [agents](/docs/fr/sub-agents) d'examen s'exécutent en parallèle, couvrant la réutilisation des assistants existants, la simplification, l'efficacité et si le changement se situe au bon niveau d'abstraction. À partir de v2.1.154, l'examen ne recherche pas les bugs de correction. Utilisez `/code-review` pour trouver les bugs. Sur les versions antérieures, `/simplify` est équivalent à `/code-review --fix`. Passez un chemin ou une référence PR pour examiner une cible spécifique |

133| `/skills` | Lister les [skills](/fr/skills) disponibles. {/* min-version: 2.1.121 */}À partir de v2.1.121, tapez pour filtrer la liste par nom. Appuyez sur `t` pour trier par nombre de tokens. Appuyez sur `Espace` pour [masquer un skill à Claude ou au menu `/`](/fr/skills#override-skill-visibility-from-settings), puis `Entrée` pour enregistrer |133| `/skills` | Lister les [skills](/docs/fr/skills) disponibles. {/* min-version: 2.1.121 */}À partir de v2.1.121, tapez pour filtrer la liste par nom. Appuyez sur `t` pour trier par nombre de tokens. Appuyez sur `Espace` pour [masquer un skill à Claude ou au menu `/`](/docs/fr/skills#override-skill-visibility-from-settings), puis `Entrée` pour enregistrer |

134| `/stats` | Alias pour `/usage`. Ouvre l'onglet Stats |134| `/stats` | Alias pour `/usage`. Ouvre l'onglet Stats |

135| `/status` | Ouvrir l'interface des Paramètres (onglet Statut) affichant la version, le modèle, le compte et la connectivité. Fonctionne pendant que Claude répond |135| `/status` | Ouvrir l'interface des Paramètres (onglet Statut) affichant la version, le modèle, le compte et la connectivité. Fonctionne pendant que Claude répond |

136| `/statusline` | Configurer la [ligne de statut](/fr/statusline) de Claude Code. Décrivez ce que vous voulez, ou exécutez sans arguments pour auto-configurer à partir de votre invite shell |136| `/statusline` | Configurer la [ligne de statut](/docs/fr/statusline) de Claude Code. Décrivez ce que vous voulez, ou exécutez sans arguments pour auto-configurer à partir de votre invite shell |

137| `/stickers` | Commander des autocollants Claude Code |137| `/stickers` | Commander des autocollants Claude Code |

138| `/stop` | Arrêter la [session d'arrière-plan](/fr/agent-view) actuelle. Disponible uniquement lors de l'attachement à une session d'arrière-plan ; la transcription et tout worktree sont conservés. Pour détacher sans arrêter, utilisez `/exit` ou appuyez sur `←` |138| `/stop` | Arrêter la [session d'arrière-plan](/docs/fr/agent-view) actuelle. Disponible uniquement lors de l'attachement à une session d'arrière-plan ; la transcription et tout worktree sont conservés. Pour détacher sans arrêter, utilisez `/exit` ou appuyez sur `←` |

139| `/tasks` | Afficher et gérer le travail en arrière-plan dans la session actuelle, y compris les sous-agents qui ont terminé. Également disponible sous `/bashes` |139| `/tasks` | Afficher et gérer le travail en arrière-plan dans la session actuelle, y compris les sous-agents qui ont terminé. Également disponible sous `/bashes` |

140| `/team-onboarding` | Générer un guide d'intégration d'équipe à partir de votre historique d'utilisation de Claude Code. Claude analyse vos sessions, commandes et utilisation du serveur MCP des 30 derniers jours et produit un guide markdown qu'un coéquipier peut coller comme premier message pour se configurer rapidement. Pour les abonnés claude.ai aux plans Pro, Max, Team et Enterprise, retourne également un lien de partage que les coéquipiers peuvent ouvrir directement dans Claude Code |140| `/team-onboarding` | Générer un guide d'intégration d'équipe à partir de votre historique d'utilisation de Claude Code. Claude analyse vos sessions, commandes et utilisation du serveur MCP des 30 derniers jours et produit un guide markdown qu'un coéquipier peut coller comme premier message pour se configurer rapidement. Pour les abonnés claude.ai aux plans Pro, Max, Team et Enterprise, retourne également un lien de partage que les coéquipiers peuvent ouvrir directement dans Claude Code |

141| `/teleport` | Extraire une session [Claude Code sur le web](/fr/claude-code-on-the-web#from-web-to-terminal) dans ce terminal : ouvre un sélecteur, puis récupère la branche et la conversation. Également disponible sous `/tp`. Nécessite un abonnement claude.ai |141| `/teleport` | Extraire une session [Claude Code sur le web](/docs/fr/claude-code-on-the-web#from-web-to-terminal) dans ce terminal : ouvre un sélecteur, puis récupère la branche et la conversation. Également disponible sous `/tp`. Nécessite un abonnement claude.ai |

142| `/terminal-setup` | Configurer les raccourcis clavier du terminal pour Shift+Entrée et d'autres raccourcis. Visible uniquement dans les terminaux qui en ont besoin, comme VS Code, Cursor, Devin Desktop, Alacritty, ou Zed |142| `/terminal-setup` | Configurer les raccourcis clavier du terminal pour Shift+Entrée et d'autres raccourcis. Visible uniquement dans les terminaux qui en ont besoin, comme VS Code, Cursor, Devin Desktop, Alacritty, ou Zed |

143| `/theme` | Modifier le thème de couleur. Inclut une option `auto` qui suit le mode sombre ou clair de votre terminal, les variantes claires et sombres, les thèmes accessibles aux daltoniens (daltonisés), les thèmes ANSI qui utilisent la palette de couleurs de votre terminal, et tous les [thèmes personnalisés](/fr/terminal-config#create-a-custom-theme) de `~/.claude/themes/` ou des plugins. Sélectionnez **Nouveau thème personnalisé…** pour en créer un |143| `/theme` | Modifier le thème de couleur. Inclut une option `auto` qui suit le mode sombre ou clair de votre terminal, les variantes claires et sombres, les thèmes accessibles aux daltoniens (daltonisés), les thèmes ANSI qui utilisent la palette de couleurs de votre terminal, et tous les [thèmes personnalisés](/docs/fr/terminal-config#create-a-custom-theme) de `~/.claude/themes/` ou des plugins. Sélectionnez **Nouveau thème personnalisé…** pour en créer un |

144| `/tui [default\|fullscreen]` | Définir le moteur de rendu de l'interface utilisateur du terminal et relancer avec votre conversation intacte. `fullscreen` active le [moteur de rendu alt-screen sans scintillement](/fr/fullscreen). Sans argument, affiche le moteur de rendu actif |144| `/tui [default\|fullscreen]` | Définir le moteur de rendu de l'interface utilisateur du terminal et relancer avec votre conversation intacte. `fullscreen` active le [moteur de rendu alt-screen sans scintillement](/docs/fr/fullscreen). Sans argument, affiche le moteur de rendu actif |

145| `/ultraplan <prompt>` | Rédiger un plan dans une session [ultraplan](/fr/ultraplan), l'examiner dans votre navigateur, puis l'exécuter à distance ou le renvoyer à votre terminal |145| `/ultraplan <prompt>` | Rédiger un plan dans une session [ultraplan](/docs/fr/ultraplan), l'examiner dans votre navigateur, puis l'exécuter à distance ou le renvoyer à votre terminal |

146| `/ultrareview [PR]` | Exécuter un examen de code approfondi multi-agents dans un sandbox cloud avec [ultrareview](/fr/ultrareview). L'invocation préférée est maintenant `/code-review ultra`, et `/ultrareview` reste comme alias. Inclut 3 exécutions gratuites sur Pro et Max, puis nécessite les [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |146| `/ultrareview [PR]` | Exécuter un examen de code approfondi multi-agents dans un sandbox cloud avec [ultrareview](/docs/fr/ultrareview). L'invocation préférée est maintenant `/code-review ultra`, et `/ultrareview` reste comme alias. Inclut 3 exécutions gratuites sur Pro et Max, puis nécessite les [crédits d'utilisation](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

147| `/upgrade` | Ouvrir la page de mise à niveau dans votre navigateur pour passer à un niveau de plan supérieur. Lorsque le navigateur ne peut pas s'ouvrir, la commande affiche une invite de connexion sans afficher l'URL |147| `/upgrade` | Ouvrir la page de mise à niveau dans votre navigateur pour passer à un niveau de plan supérieur. Lorsque le navigateur ne peut pas s'ouvrir, la commande affiche une invite de connexion sans afficher l'URL |

148| `/usage` | Afficher le coût de la session, les limites d'utilisation du plan et les statistiques d'activité. Sur un plan Pro, Max, Team ou Enterprise, inclut une ventilation de l'utilisation par skill, sous-agent, plugin et serveur MCP. Consultez le [guide de suivi des coûts](/fr/costs#using-the-%2Fusage-command) pour les détails. `/cost` et `/stats` sont des alias |148| `/usage` | Afficher le coût de la session, les limites d'utilisation du plan et les statistiques d'activité. Sur un plan Pro, Max, Team ou Enterprise, inclut une ventilation de l'utilisation par skill, sous-agent, plugin et serveur MCP. Consultez le [guide de suivi des coûts](/docs/fr/costs#using-the-%2Fusage-command) pour les détails. `/cost` et `/stats` sont des alias |

149| `/usage-credits` | Configurer les crédits d'utilisation pour continuer à travailler lorsque vous atteignez une limite. Sur les plans Pro et Max, ouvre une [boîte de dialogue en CLI](/fr/costs#set-a-spend-limit-on-pro-and-max) pour acheter des crédits d'utilisation, définir une limite de dépenses mensuelle et configurer le rechargement automatique ; sur les versions de Claude Code antérieures à v2.1.207 et sur les autres plans, ouvre la page de facturation des crédits d'utilisation dans votre navigateur, sauf que les membres de Team et Enterprise sans accès à la facturation envoient plutôt une demande de crédits d'utilisation à leur administrateur depuis le CLI. {/* min-version: 2.1.205 */}Lorsqu'aucun navigateur ne peut ouvrir la page de facturation, par exemple via SSH, la commande affiche l'URL à visiter à la place ; cela nécessite Claude Code v2.1.205 ou ultérieur, et les versions antérieures n'affichaient rien dans ce cas. Anciennement `/extra-usage` |149| `/usage-credits` | Configurer les crédits d'utilisation pour continuer à travailler lorsque vous atteignez une limite. Sur les plans Pro et Max, ouvre une [boîte de dialogue en CLI](/docs/fr/costs#set-a-spend-limit-on-pro-and-max) pour acheter des crédits d'utilisation, définir une limite de dépenses mensuelle et configurer le rechargement automatique ; sur les versions de Claude Code antérieures à v2.1.207 et sur les autres plans, ouvre la page de facturation des crédits d'utilisation dans votre navigateur, sauf que les membres de Team et Enterprise sans accès à la facturation envoient plutôt une demande de crédits d'utilisation à leur administrateur depuis le CLI. {/* min-version: 2.1.205 */}Lorsqu'aucun navigateur ne peut ouvrir la page de facturation, par exemple via SSH, la commande affiche l'URL à visiter à la place ; cela nécessite Claude Code v2.1.205 ou ultérieur, et les versions antérieures n'affichaient rien dans ce cas. Anciennement `/extra-usage` |

150| `/verify` | **[Skill](/fr/skills#bundled-skills).** Confirmer qu'un changement de code fait ce qu'il devrait en construisant l'application de votre projet, en l'exécutant et en observant le résultat, plutôt que de compter sur les tests ou les vérifications de type. Consultez [Exécuter et vérifier votre application](/fr/skills#run-and-verify-your-app). {/* min-version: 2.1.145 */}Nécessite Claude Code v2.1.145 ou ultérieur |150| `/verify` | **[Skill](/docs/fr/skills#bundled-skills).** Confirmer qu'un changement de code fait ce qu'il devrait en construisant l'application de votre projet, en l'exécutant et en observant le résultat, plutôt que de compter sur les tests ou les vérifications de type. Consultez [Exécuter et vérifier votre application](/docs/fr/skills#run-and-verify-your-app). {/* min-version: 2.1.145 */}Nécessite Claude Code v2.1.145 ou ultérieur |

151| `/vim` | {/* max-version: 2.1.91 */}Supprimé dans v2.1.92. Pour basculer entre les modes d'édition Vim et Normal, utilisez `/config` → Mode d'édition |151| `/vim` | {/* max-version: 2.1.91 */}Supprimé dans v2.1.92. Pour basculer entre les modes d'édition Vim et Normal, utilisez `/config` → Mode d'édition |

152| `/voice [hold\|tap\|off]` | Activer/désactiver la [dictée vocale](/fr/voice-dictation), ou l'activer dans un mode spécifique. Nécessite un compte Claude.ai |152| `/voice [hold\|tap\|off]` | Activer/désactiver la [dictée vocale](/docs/fr/voice-dictation), ou l'activer dans un mode spécifique. Nécessite un compte Claude.ai |

153| `/web-setup` | Connecter votre compte GitHub à [Claude Code sur le web](/fr/web-quickstart#connect-from-your-terminal) en utilisant vos identifiants CLI `gh` locaux. `/schedule` demande cela automatiquement si GitHub n'est pas connecté |153| `/web-setup` | Connecter votre compte GitHub à [Claude Code sur le web](/docs/fr/web-quickstart#connect-from-your-terminal) en utilisant vos identifiants CLI `gh` locaux. `/schedule` demande cela automatiquement si GitHub n'est pas connecté |

154| `/workflows` | Ouvrir la [vue de progression du workflow](/fr/workflows#watch-the-run) pour regarder, mettre en pause, reprendre ou enregistrer les workflows en cours d'exécution et terminés |154| `/workflows` | Ouvrir la [vue de progression du workflow](/docs/fr/workflows#watch-the-run) pour regarder, mettre en pause, reprendre ou enregistrer les workflows en cours d'exécution et terminés |

155 155 

156<h2 id="mcp-prompts">156<h2 id="mcp-prompts">

157 Prompts MCP157 Prompts MCP

158</h2>158</h2>

159 159 

160Les serveurs MCP peuvent exposer des prompts qui apparaissent comme des commandes. Ceux-ci utilisent le format `/mcp__<server>__<prompt>` et sont découverts dynamiquement à partir des serveurs connectés. Consultez [Prompts MCP](/fr/mcp#use-mcp-prompts-as-commands) pour plus de détails.160Les serveurs MCP peuvent exposer des prompts qui apparaissent comme des commandes. Ceux-ci utilisent le format `/mcp__<server>__<prompt>` et sont découverts dynamiquement à partir des serveurs connectés. Consultez [Prompts MCP](/docs/fr/mcp#use-mcp-prompts-as-commands) pour plus de détails.

161 161 

162<h2 id="see-also">162<h2 id="see-also">

163 Voir aussi163 Voir aussi

164</h2>164</h2>

165 165 

166* [Skills](/fr/skills) : créer vos propres commandes166* [Skills](/docs/fr/skills) : créer vos propres commandes

167* [Mode interactif](/fr/interactive-mode) : raccourcis clavier, mode Vim et historique des commandes167* [Mode interactif](/docs/fr/interactive-mode) : raccourcis clavier, mode Vim et historique des commandes

168* [Référence CLI](/fr/cli-reference) : drapeaux de lancement168* [Référence CLI](/docs/fr/cli-reference) : drapeaux de lancement

hooks.md +63 −63

Details

7> Référence pour les événements de hook Claude Code, le schéma de configuration, les formats d'entrée/sortie JSON, les codes de sortie, les hooks asynchrones, les hooks HTTP, les hooks de prompt et les hooks d'outils MCP.7> Référence pour les événements de hook Claude Code, le schéma de configuration, les formats d'entrée/sortie JSON, les codes de sortie, les hooks asynchrones, les hooks HTTP, les hooks de prompt et les hooks d'outils MCP.

8 8 

9<Tip>9<Tip>

10 Pour un guide de démarrage rapide avec des exemples, consultez [Automatiser les actions avec les hooks](/fr/hooks-guide).10 Pour un guide de démarrage rapide avec des exemples, consultez [Automatiser les actions avec les hooks](/docs/fr/hooks-guide).

11</Tip>11</Tip>

12 12 

13Les hooks sont des commandes shell définies par l'utilisateur, des points de terminaison HTTP ou des prompts LLM qui s'exécutent automatiquement à des points spécifiques du cycle de vie de Claude Code. Utilisez cette référence pour consulter les schémas d'événements, les options de configuration, les formats d'entrée/sortie JSON et les fonctionnalités avancées comme les hooks asynchrones, les hooks HTTP et les hooks d'outils MCP. Si vous configurez des hooks pour la première fois, commencez plutôt par le [guide](/fr/hooks-guide).13Les hooks sont des commandes shell définies par l'utilisateur, des points de terminaison HTTP ou des prompts LLM qui s'exécutent automatiquement à des points spécifiques du cycle de vie de Claude Code. Utilisez cette référence pour consulter les schémas d'événements, les options de configuration, les formats d'entrée/sortie JSON et les fonctionnalités avancées comme les hooks asynchrones, les hooks HTTP et les hooks d'outils MCP. Si vous configurez des hooks pour la première fois, commencez plutôt par le [guide](/docs/fr/hooks-guide).

14 14 

15<h2 id="hook-lifecycle">15<h2 id="hook-lifecycle">

16 Cycle de vie des hooks16 Cycle de vie des hooks


52| `TaskCompleted` | When a task is being marked as completed |52| `TaskCompleted` | When a task is being marked as completed |

53| `Stop` | When Claude finishes responding |53| `Stop` | When Claude finishes responding |

54| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |54| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

55| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |55| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |

56| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |56| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

57| `ConfigChange` | When a configuration file changes during a session |57| `ConfigChange` | When a configuration file changes during a session |

58| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |58| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

59| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |59| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

60| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |60| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |

61| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |61| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |

62| `PreCompact` | Before context compaction |62| `PreCompact` | Before context compaction |

63| `PostCompact` | After context compaction completes |63| `PostCompact` | After context compaction completes |

64| `Elicitation` | When an MCP server requests user input during a tool call |64| `Elicitation` | When an MCP server requests user input during a tool call |


147 }147 }

148 ```148 ```

149 149 

150 Si la commande avait été une variante plus sûre de `rm` comme `rm file.txt`, le script aurait atteint `exit 0` à la place. Un code de sortie 0 sans sortie signifie que le hook n'a pas de décision à signaler, donc l'appel d'outil continue à travers le [flux de permission](/fr/permissions) normal. Le hook peut refuser l'appel, mais rester silencieux ne l'approuve pas.150 Si la commande avait été une variante plus sûre de `rm` comme `rm file.txt`, le script aurait atteint `exit 0` à la place. Un code de sortie 0 sans sortie signifie que le hook n'a pas de décision à signaler, donc l'appel d'outil continue à travers le [flux de permission](/docs/fr/permissions) normal. Le hook peut refuser l'appel, mais rester silencieux ne l'approuve pas.

151 </Step>151 </Step>

152 152 

153 <Step title="Claude Code agit sur le résultat">153 <Step title="Claude Code agit sur le résultat">


185| `.claude/settings.json` | Projet unique | Oui, peut être commité dans le repo |185| `.claude/settings.json` | Projet unique | Oui, peut être commité dans le repo |

186| `.claude/settings.local.json` | Projet unique | Non, ignoré par git lorsque Claude Code le crée |186| `.claude/settings.local.json` | Projet unique | Non, ignoré par git lorsque Claude Code le crée |

187| Paramètres de politique gérée | À l'échelle de l'organisation | Oui, contrôlé par l'administrateur |187| Paramètres de politique gérée | À l'échelle de l'organisation | Oui, contrôlé par l'administrateur |

188| [Plugin](/fr/plugins) `hooks/hooks.json` | Lorsque le plugin est activé | Oui, fourni avec le plugin |188| [Plugin](/docs/fr/plugins) `hooks/hooks.json` | Lorsque le plugin est activé | Oui, fourni avec le plugin |

189| Frontmatter [Skill](/fr/skills) ou [agent](/fr/sub-agents) | Pendant que le composant est actif | Oui, défini dans le fichier du composant |189| Frontmatter [Skill](/docs/fr/skills) ou [agent](/docs/fr/sub-agents) | Pendant que le composant est actif | Oui, défini dans le fichier du composant |

190 190 

191Pour plus de détails sur la résolution des fichiers de paramètres, consultez [paramètres](/fr/settings). Les administrateurs d'entreprise peuvent utiliser `allowManagedHooksOnly` pour bloquer les hooks utilisateur, projet et plugin. Les hooks des plugins forcément activés dans les paramètres gérés `enabledPlugins` sont exempts, donc les administrateurs peuvent distribuer les hooks vérifiés via un marketplace d'organisation. Consultez [Configuration des hooks](/fr/settings#hook-configuration).191Pour plus de détails sur la résolution des fichiers de paramètres, consultez [paramètres](/docs/fr/settings). Les administrateurs d'entreprise peuvent utiliser `allowManagedHooksOnly` pour bloquer les hooks utilisateur, projet et plugin. Les hooks des plugins forcément activés dans les paramètres gérés `enabledPlugins` sont exempts, donc les administrateurs peuvent distribuer les hooks vérifiés via un marketplace d'organisation. Consultez [Configuration des hooks](/docs/fr/settings#hook-configuration).

192 192 

193<h3 id="matcher-patterns">193<h3 id="matcher-patterns">

194 Modèles de matcher194 Modèles de matcher


258 258 

259`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` et `CwdChanged` ne supportent pas les matchers et se déclenchent toujours à chaque occurrence. Si vous ajoutez un champ `matcher` à ces événements, il est silencieusement ignoré.259`UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `MessageDisplay` et `CwdChanged` ne supportent pas les matchers et se déclenchent toujours à chaque occurrence. Si vous ajoutez un champ `matcher` à ces événements, il est silencieusement ignoré.

260 260 

261Pour les événements d'outil, vous pouvez filtrer plus étroitement en définissant le champ [`if`](#common-fields) sur les gestionnaires de hook individuels. `if` utilise la [syntaxe des règles de permission](/fr/permissions) pour correspondre au nom de l'outil et aux arguments ensemble, donc `"Bash(git *)"` s'exécute lorsqu'une sous-commande quelconque de l'entrée Bash correspond à `git *` et `"Edit(*.ts)"` s'exécute uniquement pour les fichiers TypeScript.261Pour les événements d'outil, vous pouvez filtrer plus étroitement en définissant le champ [`if`](#common-fields) sur les gestionnaires de hook individuels. `if` utilise la [syntaxe des règles de permission](/docs/fr/permissions) pour correspondre au nom de l'outil et aux arguments ensemble, donc `"Bash(git *)"` s'exécute lorsqu'une sous-commande quelconque de l'entrée Bash correspond à `git *` et `"Edit(*.ts)"` s'exécute uniquement pour les fichiers TypeScript.

262 262 

263<h4 id="match-mcp-tools">263<h4 id="match-mcp-tools">

264 Correspondre aux outils MCP264 Correspondre aux outils MCP

265</h4>265</h4>

266 266 

267Les outils du serveur [MCP](/fr/mcp) apparaissent comme des outils réguliers dans les événements d'outil (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), vous pouvez donc les faire correspondre de la même manière que tout autre nom d'outil.267Les outils du serveur [MCP](/docs/fr/mcp) apparaissent comme des outils réguliers dans les événements d'outil (`PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, `PermissionDenied`), vous pouvez donc les faire correspondre de la même manière que tout autre nom d'outil.

268 268 

269Les outils MCP suivent le modèle de nommage `mcp__<server>__<tool>`, par exemple :269Les outils MCP suivent le modèle de nommage `mcp__<server>__<tool>`, par exemple :

270 270 


280 280 

281Les 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 préfixe nu avec trait d'union comme `mcp__brave-search` est évalué comme une expression régulière non ancrée et correspond à chaque outil de ce serveur. La forme `mcp__brave-search__.*` fonctionne sur chaque version.281Les 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 préfixe nu avec trait d'union comme `mcp__brave-search` est évalué comme une expression régulière non ancrée et correspond à chaque outil de ce serveur. La forme `mcp__brave-search__.*` fonctionne sur chaque version.

282 282 

283Les outils d'un [serveur MCP fourni par un plugin](/fr/mcp#plugin-provided-mcp-servers) utilisent un segment de serveur limité qui inclut le nom du plugin : `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Un matcher écrit contre la clé de serveur nue ne se déclenche jamais pour ces outils. Pour un plugin nommé `my-plugin` qui regroupe un serveur sous la clé `db`, un outil `query` apparaît comme `mcp__plugin_my-plugin_db__query`, donc le matcher pour chaque outil de ce serveur est `mcp__plugin_my-plugin_db__.*`. Utilisez le même nom d'outil limité dans le champ [`if`](#common-fields) d'un gestionnaire. Consultez [Serveurs MCP fournis par un plugin](/fr/mcp#plugin-provided-mcp-servers) pour savoir comment le nom limité est construit.283Les outils d'un [serveur MCP fourni par un plugin](/docs/fr/mcp#plugin-provided-mcp-servers) utilisent un segment de serveur limité qui inclut le nom du plugin : `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Un matcher écrit contre la clé de serveur nue ne se déclenche jamais pour ces outils. Pour un plugin nommé `my-plugin` qui regroupe un serveur sous la clé `db`, un outil `query` apparaît comme `mcp__plugin_my-plugin_db__query`, donc le matcher pour chaque outil de ce serveur est `mcp__plugin_my-plugin_db__.*`. Utilisez le même nom d'outil limité dans le champ [`if`](#common-fields) d'un gestionnaire. Consultez [Serveurs MCP fournis par un plugin](/docs/fr/mcp#plugin-provided-mcp-servers) pour savoir comment le nom limité est construit.

284 284 

285Cet exemple enregistre toutes les opérations du serveur memory et valide les opérations d'écriture de n'importe quel serveur MCP :285Cet exemple enregistre toutes les opérations du serveur memory et valide les opérations d'écriture de n'importe quel serveur MCP :

286 286 


319 319 

320* **[Hooks de commande](#command-hook-fields)** (`type: "command"`) : exécutent une commande shell. Votre script reçoit l'[entrée JSON](#hook-input-and-output) de l'événement sur stdin et communique les résultats via les codes de sortie et stdout.320* **[Hooks de commande](#command-hook-fields)** (`type: "command"`) : exécutent une commande shell. Votre script reçoit l'[entrée JSON](#hook-input-and-output) de l'événement sur stdin et communique les résultats via les codes de sortie et stdout.

321* **[Hooks HTTP](#http-hook-fields)** (`type: "http"`) : envoient l'entrée JSON de l'événement en tant que requête HTTP POST à une URL. Le point de terminaison communique les résultats via le corps de la réponse en utilisant le même [format de sortie JSON](#json-output) que les hooks de commande.321* **[Hooks HTTP](#http-hook-fields)** (`type: "http"`) : envoient l'entrée JSON de l'événement en tant que requête HTTP POST à une URL. Le point de terminaison communique les résultats via le corps de la réponse en utilisant le même [format de sortie JSON](#json-output) que les hooks de commande.

322* **[Hooks de l'outil MCP](#mcp-tool-hook-fields)** (`type: "mcp_tool"`) : appellent un outil sur un serveur [MCP](/fr/mcp) déjà connecté. La sortie textuelle de l'outil est traitée comme stdout d'un hook de commande.322* **[Hooks de l'outil MCP](#mcp-tool-hook-fields)** (`type: "mcp_tool"`) : appellent un outil sur un serveur [MCP](/docs/fr/mcp) déjà connecté. La sortie textuelle de l'outil est traitée comme stdout d'un hook de commande.

323* **[Hooks de prompt](#prompt-and-agent-hook-fields)** (`type: "prompt"`) : envoient un prompt à un modèle Claude pour une évaluation en un seul tour. Le modèle retourne une décision oui/non en JSON. Consultez [Hooks basés sur des prompts](#prompt-based-hooks).323* **[Hooks de prompt](#prompt-and-agent-hook-fields)** (`type: "prompt"`) : envoient un prompt à un modèle Claude pour une évaluation en un seul tour. Le modèle retourne une décision oui/non en JSON. Consultez [Hooks basés sur des prompts](#prompt-based-hooks).

324* **[Hooks d'agent](#prompt-and-agent-hook-fields)** (`type: "agent"`) : lancent un subagent qui peut utiliser des outils comme Read, Grep et Glob pour vérifier les conditions avant de retourner une décision. Les hooks d'agent sont expérimentaux et peuvent changer. Consultez [Hooks basés sur des agents](#agent-based-hooks).324* **[Hooks d'agent](#prompt-and-agent-hook-fields)** (`type: "agent"`) : lancent un subagent qui peut utiliser des outils comme Read, Grep et Glob pour vérifier les conditions avant de retourner une décision. Les hooks d'agent sont expérimentaux et peuvent changer. Consultez [Hooks basés sur des agents](#agent-based-hooks).

325 325 

326Tous les hooks correspondants s'exécutent en parallèle, et les gestionnaires identiques sont automatiquement dédupliqués. Les hooks de commande sont dédupliqués par chaîne de commande et `args`, et les hooks HTTP sont dédupliqués par URL.326Tous les hooks correspondants s'exécutent en parallèle, et les gestionnaires identiques sont automatiquement dédupliqués. Les hooks de commande sont dédupliqués par chaîne de commande et `args`, et les hooks HTTP sont dédupliqués par URL.

327 327 

328Les gestionnaires s'exécutent dans le répertoire courant avec l'environnement de Claude Code. La variable d'environnement `$CLAUDE_CODE_REMOTE` est définie à `"true"` dans les environnements web distants et n'est pas définie dans le CLI local. {/* min-version: 2.1.199 */}À partir de v2.1.199, [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/fr/env-vars) est défini à l'ID de session [Contrôle à distance](/fr/remote-control) tandis que la session locale a une connexion Contrôle à distance active.328Les gestionnaires s'exécutent dans le répertoire courant avec l'environnement de Claude Code. La variable d'environnement `$CLAUDE_CODE_REMOTE` est définie à `"true"` dans les environnements web distants et n'est pas définie dans le CLI local. {/* min-version: 2.1.199 */}À partir de v2.1.199, [`$CLAUDE_CODE_BRIDGE_SESSION_ID`](/docs/fr/env-vars) est défini à l'ID de session [Contrôle à distance](/docs/fr/remote-control) tandis que la session locale a une connexion Contrôle à distance active.

329 329 

330<h4 id="common-fields">330<h4 id="common-fields">

331 Champs communs331 Champs communs


336| Champ | Requis | Description |336| Champ | Requis | Description |

337| :-------------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |337| :-------------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

338| `type` | oui | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` ou `"agent"` |338| `type` | oui | `"command"`, `"http"`, `"mcp_tool"`, `"prompt"` ou `"agent"` |

339| `if` | non | Syntaxe de règle de permission pour filtrer quand ce hook s'exécute, comme `"Bash(git *)"` ou `"Edit(*.ts)"`. Le hook de commande ne s'exécute que si l'appel d'outil correspond au modèle. Consultez le [tableau de correspondance Bash](#bash-if-matching) ci-dessous pour voir comment les modèles Bash s'évaluent par rapport aux sous-commandes, `$()` et aux backticks. Évalué uniquement sur les événements d'outil : `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` et `PermissionDenied`. Sur les autres événements, un hook avec `if` défini ne s'exécute jamais. Utilise la même syntaxe que les [règles de permission](/fr/permissions) |339| `if` | non | Syntaxe de règle de permission pour filtrer quand ce hook s'exécute, comme `"Bash(git *)"` ou `"Edit(*.ts)"`. Le hook de commande ne s'exécute que si l'appel d'outil correspond au modèle. Consultez le [tableau de correspondance Bash](#bash-if-matching) ci-dessous pour voir comment les modèles Bash s'évaluent par rapport aux sous-commandes, `$()` et aux backticks. Évalué uniquement sur les événements d'outil : `PreToolUse`, `PostToolUse`, `PostToolUseFailure`, `PermissionRequest` et `PermissionDenied`. Sur les autres événements, un hook avec `if` défini ne s'exécute jamais. Utilise la même syntaxe que les [règles de permission](/docs/fr/permissions) |

340| `timeout` | non | Secondes avant annulation. Valeurs par défaut : 600 pour `command`, `http` et `mcp_tool` ; 30 pour `prompt` ; 60 pour `agent`. [`UserPromptSubmit`](#userpromptsubmit) abaisse la valeur par défaut de `command`, `http` et `mcp_tool` à 30, et [`MessageDisplay`](#messagedisplay) l'abaisse à 10 |340| `timeout` | non | Secondes avant annulation. Valeurs par défaut : 600 pour `command`, `http` et `mcp_tool` ; 30 pour `prompt` ; 60 pour `agent`. [`UserPromptSubmit`](#userpromptsubmit) abaisse la valeur par défaut de `command`, `http` et `mcp_tool` à 30, et [`MessageDisplay`](#messagedisplay) l'abaisse à 10 |

341| `statusMessage` | non | Message de spinner personnalisé affiché pendant l'exécution du hook |341| `statusMessage` | non | Message de spinner personnalisé affiché pendant l'exécution du hook |

342| `once` | non | Si `true`, s'exécute une seule fois par session puis est supprimé. Honoré uniquement pour les hooks déclarés dans le [frontmatter des skills](#hooks-in-skills-and-agents) ; ignoré dans les fichiers de paramètres et le frontmatter des agents |342| `once` | non | Si `true`, s'exécute une seule fois par session puis est supprimé. Honoré uniquement pour les hooks déclarés dans le [frontmatter des skills](#hooks-in-skills-and-agents) ; ignoré dans les fichiers de paramètres et le frontmatter des agents |


353| `Bash(rm *)` | `echo $(date)` | non | aucune sous-commande ne correspond à `rm *` |353| `Bash(rm *)` | `echo $(date)` | non | aucune sous-commande ne correspond à `rm *` |

354| `Bash(git push *)` | `echo $(date)` | oui | les modèles qui spécifient plus que le nom de la commande exécutent le hook de toute façon sur `$()`, les backticks ou `$VAR` |354| `Bash(git push *)` | `echo $(date)` | oui | les modèles qui spécifient plus que le nom de la commande exécutent le hook de toute façon sur `$()`, les backticks ou `$VAR` |

355 355 

356Le filtre échoue également ouvert, exécutant votre hook indépendamment du modèle, lorsque la commande Bash ne peut pas être analysée. Parce que le filtre `if` est au mieux un effort, utilisez le [système de permission](/fr/permissions) plutôt qu'un hook pour appliquer une autorisation ou un refus strict.356Le filtre échoue également ouvert, exécutant votre hook indépendamment du modèle, lorsque la commande Bash ne peut pas être analysée. Parce que le filtre `if` est au mieux un effort, utilisez le [système de permission](/docs/fr/permissions) plutôt qu'un hook pour appliquer une autorisation ou un refus strict.

357 357 

358<h4 id="command-hook-fields">358<h4 id="command-hook-fields">

359 Champs des hooks de commande359 Champs des hooks de commande


406 406 

407Les 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é.407Les 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é.

408 408 

409Les hooks de plugin substituent également les valeurs [`${user_config.*}`](/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.409Les 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.

410 410 

411Un hook de plugin en forme shell dont la `command` référence `${user_config.*}` échoue avec une [erreur](/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.*}`.411Un 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.*}`.

412 412 

413<Note>413<Note>

414 En forme exec, `command` est uniquement le nom ou le chemin de l'exécutable. Si `command` est un nom nu sans séparateur de chemin et contient des espaces aux côtés de `args`, Claude Code enregistre un avertissement car le lancement échouera : il n'y a pas d'exécutable nommé `node script.js`. Déplacez les tokens supplémentaires dans `args`. Les chemins absolus avec des espaces, tels que `C:\Program Files\nodejs\node.exe`, sont un seul exécutable valide et ne déclenchent pas l'avertissement.414 En forme exec, `command` est uniquement le nom ou le chemin de l'exécutable. Si `command` est un nom nu sans séparateur de chemin et contient des espaces aux côtés de `args`, Claude Code enregistre un avertissement car le lancement échouera : il n'y a pas d'exécutable nommé `node script.js`. Déplacez les tokens supplémentaires dans `args`. Les chemins absolus avec des espaces, tels que `C:\Program Files\nodejs\node.exe`, sont un seul exécutable valide et ne déclenchent pas l'avertissement.


463 463 

464| Champ | Requis | Description |464| Champ | Requis | Description |

465| :------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |465| :------- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

466| `server` | oui | Nom d'un serveur MCP configuré. Pour un [serveur fourni par un plugin](/fr/mcp#plugin-provided-mcp-servers), c'est le nom limité `plugin:<plugin-name>:<server-name>`, comme `plugin:my-plugin:db`, pas la clé de serveur nue. Le serveur doit déjà être connecté ; le hook ne déclenche jamais un flux OAuth ou de connexion |466| `server` | oui | Nom d'un serveur MCP configuré. Pour un [serveur fourni par un plugin](/docs/fr/mcp#plugin-provided-mcp-servers), c'est le nom limité `plugin:<plugin-name>:<server-name>`, comme `plugin:my-plugin:db`, pas la clé de serveur nue. Le serveur doit déjà être connecté ; le hook ne déclenche jamais un flux OAuth ou de connexion |

467| `tool` | oui | Nom de l'outil à appeler sur ce serveur |467| `tool` | oui | Nom de l'outil à appeler sur ce serveur |

468| `input` | non | Arguments passés à l'outil. Les valeurs de chaîne supportent la substitution `${path}` de l'[entrée JSON](#hook-input-and-output) du hook, comme `"${tool_input.file_path}"` |468| `input` | non | Arguments passés à l'outil. Les valeurs de chaîne supportent la substitution `${path}` de l'[entrée JSON](#hook-input-and-output) du hook, comme `"${tool_input.file_path}"` |

469 469 


510 510 

511Utilisez 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 :511Utilisez 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 :

512 512 

513* `${CLAUDE_PROJECT_DIR}` : la racine du projet. Claude Code définit également cette variable dans l'environnement des [serveurs MCP stdio](/fr/mcp#option-3-add-a-local-stdio-server) et des serveurs LSP de plugin.513* `${CLAUDE_PROJECT_DIR}` : la racine du projet. 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.

514* `${CLAUDE_PLUGIN_ROOT}` : le répertoire d'installation du plugin, pour les scripts fournis avec un [plugin](/fr/plugins). Change à chaque mise à jour du plugin.514* `${CLAUDE_PLUGIN_ROOT}` : le répertoire d'installation du plugin, pour les scripts fournis avec un [plugin](/docs/fr/plugins). Change à chaque mise à jour du plugin.

515* `${CLAUDE_PLUGIN_DATA}` : le [répertoire de données persistantes](/fr/plugins-reference#persistent-data-directory) du plugin, pour les dépendances et l'état qui doivent survivre aux mises à jour du plugin.515* `${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.

516 516 

517Préférez la [forme exec](#exec-form-and-shell-form) pour tout hook qui référence un placeholder de chemin. La forme exec passe chaque élément `args` comme un argument sans tokenisation shell, donc les chemins avec des espaces ou des caractères spéciaux n'ont besoin d'aucun guillemet. En forme shell, enveloppez chaque placeholder entre guillemets doubles.517Préférez la [forme exec](#exec-form-and-shell-form) pour tout hook qui référence un placeholder de chemin. La forme exec passe chaque élément `args` comme un argument sans tokenisation shell, donc les chemins avec des espaces ou des caractères spéciaux n'ont besoin d'aucun guillemet. En forme shell, enveloppez chaque placeholder entre guillemets doubles.

518 518 


566 }566 }

567 ```567 ```

568 568 

569 Consultez la [référence des composants de plugin](/fr/plugins-reference#hooks) pour plus de détails sur la création de hooks de plugin.569 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.

570 </Tab>570 </Tab>

571</Tabs>571</Tabs>

572 572 


574 Hooks dans les skills et agents574 Hooks dans les skills et agents

575</h3>575</h3>

576 576 

577En plus des fichiers de paramètres et des plugins, les hooks peuvent être définis directement dans les [skills](/fr/skills) et les [subagents](/fr/sub-agents) en utilisant le frontmatter. Ces hooks sont limités au cycle de vie du composant et ne s'exécutent que lorsque ce composant est actif.577En plus des fichiers de paramètres et des plugins, les hooks peuvent être définis directement dans les [skills](/docs/fr/skills) et les [subagents](/docs/fr/sub-agents) en utilisant le frontmatter. Ces hooks sont limités au cycle de vie du composant et ne s'exécutent que lorsque ce composant est actif.

578 578 

579Tous les événements de hook sont supportés. Pour les subagents, les hooks `Stop` sont automatiquement convertis en `SubagentStop` puisque c'est l'événement qui se déclenche lorsqu'un subagent se termine.579Tous les événements de hook sont supportés. Pour les subagents, les hooks `Stop` sont automatiquement convertis en `SubagentStop` puisque c'est l'événement qui se déclenche lorsqu'un subagent se termine.

580 580 


643| Champ | Description |643| Champ | Description |

644| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |644| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

645| `session_id` | Identifiant de session actuel |645| `session_id` | Identifiant de session actuel |

646| `prompt_id` | UUID identifiant le prompt utilisateur actuellement traité. Correspond à l'[attribut `prompt.id` sur les événements OpenTelemetry](/fr/monitoring-usage#event-correlation-attributes), afin que vous puissiez corréler la sortie du hook avec la télémétrie pour un seul prompt. Absent jusqu'à la première entrée utilisateur. {/* min-version: 2.1.196 */}Nécessite Claude Code v2.1.196 ou ultérieur |646| `prompt_id` | UUID identifiant le prompt utilisateur actuellement traité. Correspond à l'[attribut `prompt.id` sur les événements OpenTelemetry](/docs/fr/monitoring-usage#event-correlation-attributes), afin que vous puissiez corréler la sortie du hook avec la télémétrie pour un seul prompt. Absent jusqu'à la première entrée utilisateur. {/* min-version: 2.1.196 */}Nécessite Claude Code v2.1.196 ou ultérieur |

647| `transcript_path` | Chemin vers le JSON de conversation. Le fichier de transcription est écrit de manière asynchrone et peut être en retard par rapport à la conversation en mémoire, il se peut donc qu'il n'inclue pas encore les messages les plus récents du tour actuel lorsqu'un hook se déclenche. Les hooks qui ont besoin du texte final de l'assistant du tour actuel doivent utiliser `last_assistant_message` sur [Stop](#stop) et [SubagentStop](#subagentstop) au lieu de lire la transcription |647| `transcript_path` | Chemin vers le JSON de conversation. Le fichier de transcription est écrit de manière asynchrone et peut être en retard par rapport à la conversation en mémoire, il se peut donc qu'il n'inclue pas encore les messages les plus récents du tour actuel lorsqu'un hook se déclenche. Les hooks qui ont besoin du texte final de l'assistant du tour actuel doivent utiliser `last_assistant_message` sur [Stop](#stop) et [SubagentStop](#subagentstop) au lieu de lire la transcription |

648| `cwd` | Répertoire de travail courant lorsque le hook est invoqué |648| `cwd` | Répertoire de travail courant lorsque le hook est invoqué |

649| `permission_mode` | [Mode de permission](/fr/permissions#permission-modes) actuel : `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` ou `"bypassPermissions"`. Le mode étiqueté **Manuel** arrive comme `"default"`, jamais comme `"manual"`, afin que les scripts qui correspondent à `"default"` continuent de fonctionner. Tous les événements ne reçoivent pas ce champ. Consultez l'exemple JSON de chaque [événement de hook](#hook-events) |649| `permission_mode` | [Mode de permission](/docs/fr/permissions#permission-modes) actuel : `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"` ou `"bypassPermissions"`. Le mode étiqueté **Manuel** arrive comme `"default"`, jamais comme `"manual"`, afin que les scripts qui correspondent à `"default"` continuent de fonctionner. Tous les événements ne reçoivent pas ce champ. Consultez l'exemple JSON de chaque [événement de hook](#hook-events) |

650| `effort` | Objet avec un champ `level` contenant le [niveau d'effort](/fr/model-config#adjust-effort-level) actif pour le tour : `"low"`, `"medium"`, `"high"`, `"xhigh"` ou `"max"`. Si l'effort demandé du modèle dépasse ce que le modèle actuel supporte, c'est le niveau réduit que le modèle a réellement utilisé. Ultracode n'est pas un niveau distinct et est signalé comme `"xhigh"`. L'objet correspond au champ `effort` de la [ligne de statut](/fr/statusline#available-data). Présent pour les événements qui se déclenchent dans un contexte d'utilisation d'outil, tels que `PreToolUse`, `PostToolUse`, `Stop` et `SubagentStop`, lorsque le modèle actuel supporte le paramètre d'effort. Le niveau est également disponible pour les commandes de hook et l'outil Bash en tant que variable d'environnement `$CLAUDE_EFFORT`. |650| `effort` | Objet avec un champ `level` contenant le [niveau d'effort](/docs/fr/model-config#adjust-effort-level) actif pour le tour : `"low"`, `"medium"`, `"high"`, `"xhigh"` ou `"max"`. Si l'effort demandé du modèle dépasse ce que le modèle actuel supporte, c'est le niveau réduit que le modèle a réellement utilisé. Ultracode n'est pas un niveau distinct et est signalé comme `"xhigh"`. L'objet correspond au champ `effort` de la [ligne de statut](/docs/fr/statusline#available-data). Présent pour les événements qui se déclenchent dans un contexte d'utilisation d'outil, tels que `PreToolUse`, `PostToolUse`, `Stop` et `SubagentStop`, lorsque le modèle actuel supporte le paramètre d'effort. Le niveau est également disponible pour les commandes de hook et l'outil Bash en tant que variable d'environnement `$CLAUDE_EFFORT`. |

651| `hook_event_name` | Nom de l'événement qui s'est déclenché |651| `hook_event_name` | Nom de l'événement qui s'est déclenché |

652 652 

653Lors de l'exécution avec `--agent` ou à l'intérieur d'un subagent, deux champs supplémentaires sont inclus :653Lors de l'exécution avec `--agent` ou à l'intérieur d'un subagent, deux champs supplémentaires sont inclus :


655| Champ | Description |655| Champ | Description |

656| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |656| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

657| `agent_id` | Identifiant unique pour le subagent. Présent uniquement lorsque le hook se déclenche à l'intérieur d'un appel de subagent. Utilisez ceci pour distinguer les appels de hook de subagent des appels du thread principal. |657| `agent_id` | Identifiant unique pour le subagent. Présent uniquement lorsque le hook se déclenche à l'intérieur d'un appel de subagent. Utilisez ceci pour distinguer les appels de hook de subagent des appels du thread principal. |

658| `agent_type` | Nom de l'agent (par exemple, `"Explore"` ou `"security-reviewer"`). Présent lorsque la session utilise `--agent` ou que le hook se déclenche à l'intérieur d'un subagent. Pour les subagents, le type du subagent prend précédence sur la valeur `--agent` de la session. Pour les [subagents personnalisés](/fr/sub-agents), c'est le champ `name` du frontmatter de l'agent, pas le nom du fichier. Pour les subagents fournis par un [plugin](/fr/plugins), c'est l'identifiant scoped du plugin tel que `my-plugin:reviewer`, pas le nom du frontmatter nu. Consultez [SubagentStart](#subagentstart) pour savoir comment écrire un matcher contre un nom scoped du plugin. |658| `agent_type` | Nom de l'agent (par exemple, `"Explore"` ou `"security-reviewer"`). Présent lorsque la session utilise `--agent` ou que le hook se déclenche à l'intérieur d'un subagent. Pour les subagents, le type du subagent prend précédence sur la valeur `--agent` de la session. Pour les [subagents personnalisés](/docs/fr/sub-agents), c'est le champ `name` du frontmatter de l'agent, pas le nom du fichier. Pour les subagents fournis par un [plugin](/docs/fr/plugins), c'est l'identifiant scoped du plugin tel que `my-plugin:reviewer`, pas le nom du frontmatter nu. Consultez [SubagentStart](#subagentstart) pour savoir comment écrire un matcher contre un nom scoped du plugin. |

659 659 

660Seuls les hooks [`SessionStart`](#sessionstart) reçoivent un champ `model`, et sa présence n'est pas garantie. Il n'y a pas de variable d'environnement `$CLAUDE_MODEL`. Un processus de hook hérite de l'environnement parent, il peut donc lire `$ANTHROPIC_MODEL` si vous le définissez dans votre shell, mais cette valeur ne change pas lorsque vous changez de modèle avec `/model` pendant une session. Un ensemble de variables n'est pas hérité : Claude Code [supprime les variables d'exportateur `OTEL_*` de chaque sous-processus qu'il génère](/fr/monitoring-usage#administrator-configuration), y compris les hooks.660Seuls les hooks [`SessionStart`](#sessionstart) reçoivent un champ `model`, et sa présence n'est pas garantie. Il n'y a pas de variable d'environnement `$CLAUDE_MODEL`. Un processus de hook hérite de l'environnement parent, il peut donc lire `$ANTHROPIC_MODEL` si vous le définissez dans votre shell, mais cette valeur ne change pas lorsque vous changez de modèle avec `/model` pendant une session. Un ensemble de variables n'est pas hérité : Claude Code [supprime les variables d'exportateur `OTEL_*` de chaque sous-processus qu'il génère](/docs/fr/monitoring-usage#administrator-configuration), y compris les hooks.

661 661 

662Par exemple, un hook `PreToolUse` pour une commande Bash reçoit ceci sur stdin :662Par exemple, un hook `PreToolUse` pour une commande Bash reçoit ceci sur stdin :

663 663 


776 Vous devez choisir une approche par hook, pas les deux : soit utiliser les codes de sortie seuls pour signaler, soit quitter 0 et imprimer JSON pour un contrôle structuré. Claude Code ne traite JSON que sur exit 0. Si vous quittez 2, tout JSON est ignoré.776 Vous devez choisir une approche par hook, pas les deux : soit utiliser les codes de sortie seuls pour signaler, soit quitter 0 et imprimer JSON pour un contrôle structuré. Claude Code ne traite JSON que sur exit 0. Si vous quittez 2, tout JSON est ignoré.

777</Note>777</Note>

778 778 

779La sortie stdout de votre hook doit contenir uniquement l'objet JSON. Si votre profil shell imprime du texte au démarrage, cela peut interférer avec l'analyse JSON. Consultez [Validation JSON échouée](/fr/hooks-guide#json-validation-failed) dans le guide de dépannage.779La sortie stdout de votre hook doit contenir uniquement l'objet JSON. Si votre profil shell imprime du texte au démarrage, cela peut interférer avec l'analyse JSON. Consultez [Validation JSON échouée](/docs/fr/hooks-guide#json-validation-failed) dans le guide de dépannage.

780 780 

781Les chaînes de sortie du hook, y compris `additionalContext`, `systemMessage` et stdout brut, sont plafonnées à 10 000 caractères. La sortie qui dépasse cette limite est enregistrée dans un fichier et remplacée par un aperçu et un chemin de fichier, de la même manière que les grands résultats d'outils sont gérés.781Les chaînes de sortie du hook, y compris `additionalContext`, `systemMessage` et stdout brut, sont plafonnées à 10 000 caractères. La sortie qui dépasse cette limite est enregistrée dans un fichier et remplacée par un aperçu et un chemin de fichier, de la même manière que les grands résultats d'outils sont gérés.

782 782 


868* **Règles de projet conditionnelles** : quelle commande de test s'applique au fichier qui vient d'être modifié, quels répertoires sont en lecture seule dans ce worktree868* **Règles de projet conditionnelles** : quelle commande de test s'applique au fichier qui vient d'être modifié, quels répertoires sont en lecture seule dans ce worktree

869* **Données externes** : problèmes ouverts qui vous sont assignés, résultats CI récents, contenu récupéré à partir d'un service interne869* **Données externes** : problèmes ouverts qui vous sont assignés, résultats CI récents, contenu récupéré à partir d'un service interne

870 870 

871Pour les instructions qui ne changent jamais, préférez [CLAUDE.md](/fr/memory). Il se charge sans exécuter de script et est l'endroit standard pour les conventions de projet statiques.871Pour les instructions qui ne changent jamais, préférez [CLAUDE.md](/docs/fr/memory). Il se charge sans exécuter de script et est l'endroit standard pour les conventions de projet statiques.

872 872 

873Écrivez le texte sous forme de déclarations factuelles plutôt que d'instructions système impératives. Des formulations telles que « La cible de déploiement est production » ou « Ce repo utilise `bun test` » se lisent comme des informations de projet. Le texte encadré comme des commandes système hors bande peut déclencher les défenses contre l'injection de prompt de Claude, ce qui amène Claude à vous présenter le texte au lieu de le traiter comme du contexte.873Écrivez le texte sous forme de déclarations factuelles plutôt que d'instructions système impératives. Des formulations telles que « La cible de déploiement est production » ou « Ce repo utilise `bun test` » se lisent comme des informations de projet. Le texte encadré comme des commandes système hors bande peut déclencher les défenses contre l'injection de prompt de Claude, ce qui amène Claude à vous présenter le texte au lieu de le traiter comme du contexte.

874 874 


950 </Tab>950 </Tab>

951</Tabs>951</Tabs>

952 952 

953Pour des exemples étendus incluant la validation de commandes Bash, le filtrage de prompts et les scripts d'approbation automatique, consultez [Ce que vous pouvez automatiser](/fr/hooks-guide#what-you-can-automate) dans le guide et la [implémentation de référence du validateur de commandes Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).953Pour des exemples étendus incluant la validation de commandes Bash, le filtrage de prompts et les scripts d'approbation automatique, consultez [Ce que vous pouvez automatiser](/docs/fr/hooks-guide#what-you-can-automate) dans le guide et la [implémentation de référence du validateur de commandes Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).

954 954 

955<h2 id="hook-events">955<h2 id="hook-events">

956 Événements de hook956 Événements de hook


962 SessionStart962 SessionStart

963</h3>963</h3>

964 964 

965S'exécute lorsque Claude Code démarre une nouvelle session ou reprend une session existante. Utile pour charger le contexte de développement comme les problèmes existants ou les modifications récentes de votre codebase, ou pour configurer les variables d'environnement. Pour le contexte statique qui ne nécessite pas de script, utilisez [CLAUDE.md](/fr/memory) à la place.965S'exécute lorsque Claude Code démarre une nouvelle session ou reprend une session existante. Utile pour charger le contexte de développement comme les problèmes existants ou les modifications récentes de votre codebase, ou pour configurer les variables d'environnement. Pour le contexte statique qui ne nécessite pas de script, utilisez [CLAUDE.md](/docs/fr/memory) à la place.

966 966 

967SessionStart s'exécute à chaque session, donc gardez ces hooks rapides. Seuls les hooks `type: "command"` et `type: "mcp_tool"` sont supportés.967SessionStart s'exécute à chaque session, donc gardez ces hooks rapides. Seuls les hooks `type: "command"` et `type: "mcp_tool"` sont supportés.

968 968 


1008| Champ | Description |1008| Champ | Description |

1009| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1009| :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1010| `additionalContext` | Chaîne ajoutée au contexte de Claude au début de la conversation, avant le premier prompt. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) pour savoir comment le texte est livré et ce qu'il faut y mettre |1010| `additionalContext` | Chaîne ajoutée au contexte de Claude au début de la conversation, avant le premier prompt. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) pour savoir comment le texte est livré et ce qu'il faut y mettre |

1011| `initialUserMessage` | Chaîne utilisée comme premier message utilisateur de la session. S'applique en [mode non-interactif](/fr/headless) avec le drapeau `-p`, où elle devient le premier tour même si aucun prompt n'est fourni. Si un prompt est fourni, il suit comme le tour suivant. Contrairement à `additionalContext`, qui s'attache à un tour existant, ceci crée le tour |1011| `initialUserMessage` | Chaîne utilisée comme premier message utilisateur de la session. S'applique en [mode non-interactif](/docs/fr/headless) avec le drapeau `-p`, où elle devient le premier tour même si aucun prompt n'est fourni. Si un prompt est fourni, il suit comme le tour suivant. Contrairement à `additionalContext`, qui s'attache à un tour existant, ceci crée le tour |

1012| `sessionTitle` | Définit le titre de la session, avec le même effet que `/rename`. Utilisez pour nommer les sessions automatiquement à partir du dossier de lancement, de la branche git ou du nom du worktree. S'applique uniquement lorsque `source` est `"startup"` ou `"resume"` ; ignoré sur `"clear"` et `"compact"` |1012| `sessionTitle` | Définit le titre de la session, avec le même effet que `/rename`. Utilisez pour nommer les sessions automatiquement à partir du dossier de lancement, de la branche git ou du nom du worktree. S'applique uniquement lorsque `source` est `"startup"` ou `"resume"` ; ignoré sur `"clear"` et `"compact"` |

1013| `watchPaths` | Tableau de chemins absolus à surveiller pour les événements [FileChanged](#filechanged) pendant cette session |1013| `watchPaths` | Tableau de chemins absolus à surveiller pour les événements [FileChanged](#filechanged) pendant cette session |

1014| `reloadSkills` | Booléen. Lorsque `true`, Claude Code réanalyse les répertoires [skill](/fr/skills) et de commandes après que les hooks SessionStart se terminent, donc les skills que le hook a installées sont disponibles dans la même session, à partir du premier prompt |1014| `reloadSkills` | Booléen. Lorsque `true`, Claude Code réanalyse les répertoires [skill](/docs/fr/skills) et de commandes après que les hooks SessionStart se terminent, donc les skills que le hook a installées sont disponibles dans la même session, à partir du premier prompt |

1015 1015 

1016```json theme={null}1016```json theme={null}

1017{1017{


1085 Setup1085 Setup

1086</h3>1086</h3>

1087 1087 

1088Se déclenche uniquement lorsque vous lancez Claude Code avec `--init-only`, ou avec `--init` ou `--maintenance` en [mode non-interactif](/fr/headless) avec le drapeau `-p`. Il ne se déclenche pas au démarrage normal. Utilisez-le pour l'installation de dépendances ponctuelles ou le nettoyage programmé que vous déclenchez explicitement à partir de CI ou de scripts, séparé du démarrage normal de session. Pour l'initialisation par session, utilisez [SessionStart](#sessionstart) à la place.1088Se déclenche uniquement lorsque vous lancez Claude Code avec `--init-only`, ou avec `--init` ou `--maintenance` en [mode non-interactif](/docs/fr/headless) avec le drapeau `-p`. Il ne se déclenche pas au démarrage normal. Utilisez-le pour l'installation de dépendances ponctuelles ou le nettoyage programmé que vous déclenchez explicitement à partir de CI ou de scripts, séparé du démarrage normal de session. Pour l'initialisation par session, utilisez [SessionStart](#sessionstart) à la place.

1089 1089 

1090La valeur du matcher correspond au drapeau CLI qui a déclenché le hook :1090La valeur du matcher correspond au drapeau CLI qui a déclenché le hook :

1091 1091 


1096 1096 

1097`--init-only` exécute les hooks Setup et les hooks SessionStart avec le matcher `startup`, puis quitte sans démarrer une conversation. `--init` et `--maintenance` déclenchent les hooks Setup uniquement lorsqu'ils sont combinés avec `-p` ; dans une session interactive, ces deux drapeaux ne déclenchent actuellement pas les hooks Setup.1097`--init-only` exécute les hooks Setup et les hooks SessionStart avec le matcher `startup`, puis quitte sans démarrer une conversation. `--init` et `--maintenance` déclenchent les hooks Setup uniquement lorsqu'ils sont combinés avec `-p` ; dans une session interactive, ces deux drapeaux ne déclenchent actuellement pas les hooks Setup.

1098 1098 

1099Parce que Setup ne se déclenche 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 une skill qui teste `${CLAUDE_PLUGIN_DATA}/node_modules` et exécute `npm install` si absent. Consultez le [répertoire de données persistantes](/fr/plugins-reference#persistent-data-directory) pour savoir où stocker les dépendances installées.1099Parce que Setup ne se déclenche 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 une skill qui teste `${CLAUDE_PLUGIN_DATA}/node_modules` et exécute `npm install` si absent. Consultez le [répertoire de données persistantes](/docs/fr/plugins-reference#persistent-data-directory) pour savoir où stocker les dépendances installées.

1100 1100 

1101<h4 id="setup-input">1101<h4 id="setup-input">

1102 Entrée Setup1102 Entrée Setup


1118 Contrôle de décision Setup1118 Contrôle de décision Setup

1119</h4>1119</h4>

1120 1120 

1121Les hooks Setup ne peuvent pas bloquer. Tout code de sortie non-zéro, y compris 2, affiche stderr à l'utilisateur comme un avis `<hook name> hook error`, et l'exécution continue. En [mode non-interactif](/fr/headless), la sortie du hook n'apparaît que lorsque vous lancez avec `--verbose`.1121Les hooks Setup ne peuvent pas bloquer. Tout code de sortie non-zéro, y compris 2, affiche stderr à l'utilisateur comme un avis `<hook name> hook error`, et l'exécution continue. En [mode non-interactif](/docs/fr/headless), la sortie du hook n'apparaît que lorsque vous lancez avec `--verbose`.

1122 1122 

1123Pour transmettre des informations au contexte de Claude, retournez `additionalContext` dans la sortie JSON ; le stdout brut est écrit uniquement dans le journal de débogage. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, vous pouvez retourner ces champs spécifiques à l'événement :1123Pour transmettre des informations au contexte de Claude, retournez `additionalContext` dans la sortie JSON ; le stdout brut est écrit uniquement dans le journal de débogage. En plus des [champs de sortie JSON](#json-output) disponibles pour tous les hooks, vous pouvez retourner ces champs spécifiques à l'événement :

1124 1124 


1188 1188 

1189Un hook `UserPromptSubmit` qui atteint son délai d'expiration est annulé et sa sortie, y compris tout `additionalContext`, est supprimée. Le prompt atteint toujours Claude sans ce contexte. À partir de v2.1.196, la transcription affiche un avis nommant le hook, le délai d'expiration qui s'est déclenché et que la sortie a été supprimée. Les versions antérieures annulent le hook sans avis.1189Un hook `UserPromptSubmit` qui atteint son délai d'expiration est annulé et sa sortie, y compris tout `additionalContext`, est supprimée. Le prompt atteint toujours Claude sans ce contexte. À partir de v2.1.196, la transcription affiche un avis nommant le hook, le délai d'expiration qui s'est déclenché et que la sortie a été supprimée. Les versions antérieures annulent le hook sans avis.

1190 1190 

1191Un hook de rappel [Agent SDK](/fr/agent-sdk/hooks) sur `UserPromptSubmit` qui atteint son délai d'expiration bloque le prompt avec un message nommant le hook et le délai d'expiration, car un rappel là peut agir comme une porte de politique qui ne doit pas échouer ouvertement. La session continue. Avant v2.1.208, un délai d'expiration de rappel sur cet événement terminait le tour avec une erreur d'exécution.1191Un hook de rappel [Agent SDK](/docs/fr/agent-sdk/hooks) sur `UserPromptSubmit` qui atteint son délai d'expiration bloque le prompt avec un message nommant le hook et le délai d'expiration, car un rappel là peut agir comme une porte de politique qui ne doit pas échouer ouvertement. La session continue. Avant v2.1.208, un délai d'expiration de rappel sur cet événement terminait le tour avec une erreur d'exécution.

1192 1192 

1193<h4 id="userpromptsubmit-input">1193<h4 id="userpromptsubmit-input">

1194 Entrée UserPromptSubmit1194 Entrée UserPromptSubmit


1443S'exécute après que Claude crée les paramètres de l'outil et avant le traitement de l'appel d'outil. Correspond au nom de l'outil : `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode` et tout [nom d'outil MCP](#match-mcp-tools).1443S'exécute après que Claude crée les paramètres de l'outil et avant le traitement de l'appel d'outil. Correspond au nom de l'outil : `Bash`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `WebFetch`, `WebSearch`, `AskUserQuestion`, `ExitPlanMode` et tout [nom d'outil MCP](#match-mcp-tools).

1444 1444 

1445<Warning>1445<Warning>

1446 PreToolUse s'exécute uniquement lorsque Claude appelle un outil. Les fichiers que vous [référencez avec `@` dans votre prompt](/fr/common-workflows#reference-files-and-directories) sont ajoutés sans aucun appel d'outil : Claude Code insère leurs contenus lors de la construction du prompt, donc aucun hook PreToolUse ne se déclenche pour eux, y compris les hooks correspondant à `Read`. Pour bloquer des chemins spécifiques des références `@`, utilisez une [règle de refus `Read`](/fr/permissions#read-and-edit) à la place.1446 PreToolUse s'exécute uniquement lorsque Claude appelle un outil. Les fichiers que vous [référencez avec `@` dans votre prompt](/docs/fr/common-workflows#reference-files-and-directories) sont ajoutés sans aucun appel d'outil : Claude Code insère leurs contenus lors de la construction du prompt, donc aucun hook PreToolUse ne se déclenche pour eux, y compris les hooks correspondant à `Read`. Pour bloquer des chemins spécifiques des références `@`, utilisez une [règle de refus `Read`](/docs/fr/permissions#read-and-edit) à la place.

1447</Warning>1447</Warning>

1448 1448 

1449Utilisez [Contrôle de décision PreToolUse](#pretooluse-decision-control) pour autoriser, refuser, demander ou différer l'appel d'outil.1449Utilisez [Contrôle de décision PreToolUse](#pretooluse-decision-control) pour autoriser, refuser, demander ou différer l'appel d'outil.


1464| :------------------ | :------ | :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1464| :------------------ | :------ | :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1465| `command` | string | `"npm test"` | La commande shell à exécuter |1465| `command` | string | `"npm test"` | La commande shell à exécuter |

1466| `description` | string | `"Run test suite"` | Description optionnelle de ce que fait la commande |1466| `description` | string | `"Run test suite"` | Description optionnelle de ce que fait la commande |

1467| `timeout` | number | `120000` | Délai d'expiration optionnel en millisecondes. Les valeurs au-dessus du [maximum](/fr/tools-reference#bash-tool-behavior) sont réduites au maximum plutôt que rejetées |1467| `timeout` | number | `120000` | Délai d'expiration optionnel en millisecondes. Les valeurs au-dessus du [maximum](/docs/fr/tools-reference#bash-tool-behavior) sont réduites au maximum plutôt que rejetées |

1468| `run_in_background` | boolean | `false` | Si la commande doit s'exécuter en arrière-plan |1468| `run_in_background` | boolean | `false` | Si la commande doit s'exécuter en arrière-plan |

1469 1469 

1470<h5 id="write">1470<h5 id="write">


1556 Agent1556 Agent

1557</h5>1557</h5>

1558 1558 

1559Lance un [subagent](/fr/sub-agents).1559Lance un [subagent](/docs/fr/sub-agents).

1560 1560 

1561| Champ | Type | Exemple | Description |1561| Champ | Type | Exemple | Description |

1562| :-------------- | :----- | :------------------------- | :------------------------------------------------------------ |1562| :-------------- | :----- | :------------------------- | :------------------------------------------------------------ |


1599 ExitPlanMode1599 ExitPlanMode

1600</h5>1600</h5>

1601 1601 

1602Présente un plan et demande à l'utilisateur de l'approuver avant que Claude ne quitte le [mode plan](/fr/permission-modes#analyze-before-you-edit-with-plan-mode). Claude écrit le plan dans un fichier sur le disque avant d'appeler l'outil, donc l'`tool_input` littéral du modèle est généralement vide. Claude Code injecte le contenu du plan et le chemin du fichier avant de transmettre l'entrée aux hooks.1602Présente un plan et demande à l'utilisateur de l'approuver avant que Claude ne quitte le [mode plan](/docs/fr/permission-modes#analyze-before-you-edit-with-plan-mode). Claude écrit le plan dans un fichier sur le disque avant d'appeler l'outil, donc l'`tool_input` littéral du modèle est généralement vide. Claude Code injecte le contenu du plan et le chemin du fichier avant de transmettre l'entrée aux hooks.

1603 1603 

1604| Champ | Type | Exemple | Description |1604| Champ | Type | Exemple | Description |

1605| :--------------- | :----- | :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1605| :--------------- | :----- | :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


1617 1617 

1618| Champ | Description |1618| Champ | Description |

1619| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1619| :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1620| `permissionDecision` | `"allow"` contourne le système de permission, sauf pour les [outils qui nécessitent une interaction utilisateur](#pretooluse-decision-control) et les outils connecteur que [votre organisation a défini à `ask`](/fr/mcp#organization-controls-on-connector-tools). `"deny"` empêche l'appel d'outil. `"ask"` demande à l'utilisateur de confirmer. `"defer"` sort gracieusement afin que l'outil puisse être repris plus tard. Les règles [Deny and ask](/fr/permissions#manage-permissions) s'appliquent toujours indépendamment de ce que le hook retourne |1620| `permissionDecision` | `"allow"` contourne le système de permission, sauf pour les [outils qui nécessitent une interaction utilisateur](#pretooluse-decision-control) et les outils connecteur que [votre organisation a défini à `ask`](/docs/fr/mcp#organization-controls-on-connector-tools). `"deny"` empêche l'appel d'outil. `"ask"` demande à l'utilisateur de confirmer. `"defer"` sort gracieusement afin que l'outil puisse être repris plus tard. Les règles [Deny and ask](/docs/fr/permissions#manage-permissions) s'appliquent toujours indépendamment de ce que le hook retourne |

1621| `permissionDecisionReason` | Pour `"allow"` et `"ask"`, affiché à l'utilisateur mais pas à Claude. Pour `"deny"`, affiché à Claude. Pour `"defer"`, ignoré |1621| `permissionDecisionReason` | Pour `"allow"` et `"ask"`, affiché à l'utilisateur mais pas à Claude. Pour `"deny"`, affiché à Claude. Pour `"defer"`, ignoré |

1622| `updatedInput` | Modifie les paramètres d'entrée de l'outil avant l'exécution. Remplace l'objet d'entrée entier, donc incluez les champs inchangés aux côtés des champs modifiés. Combinez avec `"allow"` pour approuver automatiquement ou `"ask"` pour montrer l'entrée modifiée à l'utilisateur. Pour `"defer"`, ignoré |1622| `updatedInput` | Modifie les paramètres d'entrée de l'outil avant l'exécution. Remplace l'objet d'entrée entier, donc incluez les champs inchangés aux côtés des champs modifiés. Combinez avec `"allow"` pour approuver automatiquement ou `"ask"` pour montrer l'entrée modifiée à l'utilisateur. Pour `"defer"`, ignoré |

1623| `additionalContext` | Chaîne ajoutée au contexte de Claude avant l'exécution de l'outil. Pour `"defer"`, ignoré. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |1623| `additionalContext` | Chaîne ajoutée au contexte de Claude avant l'exécution de l'outil. Pour `"defer"`, ignoré. Consultez [Ajouter du contexte pour Claude](#add-context-for-claude) |


1640}1640}

1641```1641```

1642 1642 

1643`AskUserQuestion` et `ExitPlanMode` nécessitent une interaction utilisateur et bloquent normalement en [mode non-interactif](/fr/headless) avec le drapeau `-p`. Retourner `permissionDecision: "allow"` avec `updatedInput` satisfait cette exigence : le hook lit l'entrée de l'outil depuis stdin, collecte la réponse via votre propre interface utilisateur et la retourne dans `updatedInput` afin que l'outil s'exécute sans inviter. Retourner `"allow"` seul n'est pas suffisant pour ces outils. Pour `AskUserQuestion`, renvoyez le tableau `questions` original et ajoutez un objet [`answers`](#askuserquestion) mappant le texte de chaque question à la réponse choisie.1643`AskUserQuestion` et `ExitPlanMode` nécessitent une interaction utilisateur et bloquent normalement en [mode non-interactif](/docs/fr/headless) avec le drapeau `-p`. Retourner `permissionDecision: "allow"` avec `updatedInput` satisfait cette exigence : le hook lit l'entrée de l'outil depuis stdin, collecte la réponse via votre propre interface utilisateur et la retourne dans `updatedInput` afin que l'outil s'exécute sans inviter. Retourner `"allow"` seul n'est pas suffisant pour ces outils. Pour `AskUserQuestion`, renvoyez le tableau `questions` original et ajoutez un objet [`answers`](#askuserquestion) mappant le texte de chaque question à la réponse choisie.

1644 1644 

1645Les outils connecteur que [votre organisation a défini à `ask`](/fr/mcp#organization-controls-on-connector-tools) invitent même lorsqu'un hook retourne `"allow"`.1645Les outils connecteur que [votre organisation a défini à `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) invitent même lorsqu'un hook retourne `"allow"`.

1646 1646 

1647À partir de v2.1.199, un outil MCP dont le serveur le marque avec [`_meta["anthropic/requiresUserInteraction"]`](/fr/mcp#require-approval-for-a-specific-tool) est plus strict : un hook ne peut pas ignorer son dialogue d'approbation avec `"allow"`, avec ou sans `updatedInput`, car Claude Code ne peut pas confirmer que le hook a collecté l'interaction dont l'outil a besoin.1647À partir de v2.1.199, un outil MCP dont le serveur le marque avec [`_meta["anthropic/requiresUserInteraction"]`](/docs/fr/mcp#require-approval-for-a-specific-tool) est plus strict : un hook ne peut pas ignorer son dialogue d'approbation avec `"allow"`, avec ou sans `updatedInput`, car Claude Code ne peut pas confirmer que le hook a collecté l'interaction dont l'outil a besoin.

1648 1648 

1649<Note>1649<Note>

1650 PreToolUse utilisait auparavant les champs `decision` et `reason` au niveau supérieur, mais ceux-ci sont dépréciés pour cet événement. Utilisez `hookSpecificOutput.permissionDecision` et `hookSpecificOutput.permissionDecisionReason` à la place. Les valeurs dépréciées `"approve"` et `"block"` correspondent à `"allow"` et `"deny"` respectivement. Les autres événements comme PostToolUse et Stop continuent d'utiliser `decision` et `reason` au niveau supérieur comme format actuel.1650 PreToolUse utilisait auparavant les champs `decision` et `reason` au niveau supérieur, mais ceux-ci sont dépréciés pour cet événement. Utilisez `hookSpecificOutput.permissionDecision` et `hookSpecificOutput.permissionDecisionReason` à la place. Les valeurs dépréciées `"approve"` et `"block"` correspondent à `"allow"` et `"deny"` respectivement. Les autres événements comme PostToolUse et Stop continuent d'utiliser `decision` et `reason` au niveau supérieur comme format actuel.


1654 Différer un appel d'outil pour plus tard1654 Différer un appel d'outil pour plus tard

1655</h4>1655</h4>

1656 1656 

1657`"defer"` est pour les intégrations qui exécutent `claude -p` en tant que sous-processus et lisent sa sortie JSON, comme une application Agent SDK ou une interface utilisateur personnalisée construite sur Claude Code. Il permet à ce processus appelant de mettre en pause Claude à un appel d'outil, de collecter l'entrée via sa propre interface et de reprendre où il s'était arrêté. Claude Code honore cette valeur uniquement en [mode non-interactif](/fr/headless) avec le drapeau `-p`. Dans les sessions interactives, il enregistre un avertissement et ignore le résultat du hook.1657`"defer"` est pour les intégrations qui exécutent `claude -p` en tant que sous-processus et lisent sa sortie JSON, comme une application Agent SDK ou une interface utilisateur personnalisée construite sur Claude Code. Il permet à ce processus appelant de mettre en pause Claude à un appel d'outil, de collecter l'entrée via sa propre interface et de reprendre où il s'était arrêté. Claude Code honore cette valeur uniquement en [mode non-interactif](/docs/fr/headless) avec le drapeau `-p`. Dans les sessions interactives, il enregistre un avertissement et ignore le résultat du hook.

1658 1658 

1659L'outil `AskUserQuestion` est le cas typique : Claude veut poser une question à l'utilisateur, mais il n'y a pas de terminal pour répondre. Le cycle aller-retour fonctionne comme ceci :1659L'outil `AskUserQuestion` est le cas typique : Claude veut poser une question à l'utilisateur, mais il n'y a pas de terminal pour répondre. Le cycle aller-retour fonctionne comme ceci :

1660 1660 


1680}1680}

1681```1681```

1682 1682 

1683Il n'y a pas de délai d'expiration ou de limite de tentatives. La session reste sur le disque jusqu'à ce que vous la repreniez, soumise au balayage de rétention [`cleanupPeriodDays`](/fr/settings#available-settings) qui supprime les fichiers de session après 30 jours par défaut. Si la réponse n'est pas prête lorsque vous reprenez, le hook peut retourner `"defer"` à nouveau et le processus quitte de la même manière. Le processus appelant contrôle quand casser la boucle en retournant finalement `"allow"` ou `"deny"` du hook.1683Il n'y a pas de délai d'expiration ou de limite de tentatives. La session reste sur le disque jusqu'à ce que vous la repreniez, soumise au balayage de rétention [`cleanupPeriodDays`](/docs/fr/settings#available-settings) qui supprime les fichiers de session après 30 jours par défaut. Si la réponse n'est pas prête lorsque vous reprenez, le hook peut retourner `"defer"` à nouveau et le processus quitte de la même manière. Le processus appelant contrôle quand casser la boucle en retournant finalement `"allow"` ou `"deny"` du hook.

1684 1684 

1685`"defer"` ne fonctionne que lorsque Claude fait un seul appel d'outil dans le tour. Si Claude fait plusieurs appels d'outil à la fois, `"defer"` est ignoré avec un avertissement et l'outil procède à travers le flux de permission normal. La contrainte existe car la reprise ne peut réexécuter qu'un seul outil : il n'y a aucun moyen de différer un appel d'une batch sans laisser les autres non résolus.1685`"defer"` ne fonctionne que lorsque Claude fait un seul appel d'outil dans le tour. Si Claude fait plusieurs appels d'outil à la fois, `"defer"` est ignoré avec un avertissement et l'outil procède à travers le flux de permission normal. La contrainte existe car la reprise ne peut réexécuter qu'un seul outil : il n'y a aucun moyen de différer un appel d'une batch sans laisser les autres non résolus.

1686 1686 


1736 1736 

1737| Champ | Description |1737| Champ | Description |

1738| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1738| :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1739| `behavior` | `"allow"` accorde la permission, `"deny"` la refuse. Les règles [Deny and ask](/fr/permissions#manage-permissions) sont toujours évaluées, donc un hook retournant `"allow"` ne remplace pas une règle deny correspondante |1739| `behavior` | `"allow"` accorde la permission, `"deny"` la refuse. Les règles [Deny and ask](/docs/fr/permissions#manage-permissions) sont toujours évaluées, donc un hook retournant `"allow"` ne remplace pas une règle deny correspondante |

1740| `updatedInput` | Pour `"allow"` uniquement : modifie les paramètres d'entrée de l'outil avant l'exécution. Remplace l'objet d'entrée entier, donc incluez les champs inchangés aux côtés des champs modifiés. L'entrée modifiée est réévaluée par rapport aux règles deny et ask |1740| `updatedInput` | Pour `"allow"` uniquement : modifie les paramètres d'entrée de l'outil avant l'exécution. Remplace l'objet d'entrée entier, donc incluez les champs inchangés aux côtés des champs modifiés. L'entrée modifiée est réévaluée par rapport aux règles deny et ask |

1741| `updatedPermissions` | Pour `"allow"` uniquement : tableau d'[entrées de mise à jour de permission](#permission-update-entries) à appliquer, comme l'ajout d'une règle d'autorisation ou la modification du mode de permission de session |1741| `updatedPermissions` | Pour `"allow"` uniquement : tableau d'[entrées de mise à jour de permission](#permission-update-entries) à appliquer, comme l'ajout d'une règle d'autorisation ou la modification du mode de permission de session |

1742| `message` | Pour `"deny"` uniquement : indique à Claude pourquoi la permission a été refusée |1742| `message` | Pour `"deny"` uniquement : indique à Claude pourquoi la permission a été refusée |


1772| `removeDirectories` | `directories`, `destination` | Supprime les répertoires de travail |1772| `removeDirectories` | `directories`, `destination` | Supprime les répertoires de travail |

1773 1773 

1774<Note>1774<Note>

1775 `setMode` avec `bypassPermissions` ne prend effet que si la session a été lancée avec le mode bypass déjà disponible : `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` ou `permissions.defaultMode: "bypassPermissions"` dans les paramètres, et le mode n'est pas désactivé par [`permissions.disableBypassPermissionsMode`](/fr/permissions#managed-settings). Sinon la mise à jour est un non-op. `bypassPermissions` n'est jamais persisté comme `defaultMode` indépendamment de `destination`.1775 `setMode` avec `bypassPermissions` ne prend effet que si la session a été lancée avec le mode bypass déjà disponible : `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions` ou `permissions.defaultMode: "bypassPermissions"` dans les paramètres, et le mode n'est pas désactivé par [`permissions.disableBypassPermissionsMode`](/docs/fr/permissions#managed-settings). Sinon la mise à jour est un non-op. `bypassPermissions` n'est jamais persisté comme `defaultMode` indépendamment de `destination`.

1776</Note>1776</Note>

1777 1777 

1778Le champ `destination` sur chaque entrée détermine si la modification reste en mémoire ou persiste dans un fichier de paramètres.1778Le champ `destination` sur chaque entrée détermine si la modification reste en mémoire ou persiste dans un fichier de paramètres.


1991 PermissionDenied1991 PermissionDenied

1992</h3>1992</h3>

1993 1993 

1994S'exécute lorsque le classificateur du [mode auto](/fr/permission-modes#eliminate-prompts-with-auto-mode) refuse un appel d'outil. Ce hook ne se déclenche que en mode auto : il ne s'exécute pas lorsque vous refusez manuellement un dialogue de permission, lorsqu'un hook `PreToolUse` bloque un appel ou lorsqu'une règle `deny` correspond. Utilisez-le pour enregistrer les refus du classificateur, ajuster la configuration ou indiquer au modèle qu'il peut réessayer l'appel d'outil.1994S'exécute lorsque le classificateur du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) refuse un appel d'outil. Ce hook ne se déclenche que en mode auto : il ne s'exécute pas lorsque vous refusez manuellement un dialogue de permission, lorsqu'un hook `PreToolUse` bloque un appel ou lorsqu'une règle `deny` correspond. Utilisez-le pour enregistrer les refus du classificateur, ajuster la configuration ou indiquer au modèle qu'il peut réessayer l'appel d'outil.

1995 1995 

1996Correspond au nom de l'outil, mêmes valeurs que PreToolUse.1996Correspond au nom de l'outil, mêmes valeurs que PreToolUse.

1997 1997 


2053| `elicitation_dialog` | Un serveur MCP ouvre un formulaire d'élicitation |2053| `elicitation_dialog` | Un serveur MCP ouvre un formulaire d'élicitation |

2054| `elicitation_complete` | Un formulaire d'élicitation MCP est soumis ou fermé |2054| `elicitation_complete` | Un formulaire d'élicitation MCP est soumis ou fermé |

2055| `elicitation_response` | Une réponse d'élicitation MCP est renvoyée au serveur |2055| `elicitation_response` | Une réponse d'élicitation MCP est renvoyée au serveur |

2056| `agent_needs_input` | Une session en arrière-plan commence à attendre votre entrée. Se déclenche uniquement pendant que la [vue agent](/fr/agent-view) est ouverte dans un terminal |2056| `agent_needs_input` | Une session en arrière-plan commence à attendre votre entrée. Se déclenche uniquement pendant que la [vue agent](/docs/fr/agent-view) est ouverte dans un terminal |

2057| `agent_completed` | Une session en arrière-plan se termine ou échoue. Se déclenche uniquement pendant que la [vue agent](/fr/agent-view) est ouverte dans un terminal |2057| `agent_completed` | Une session en arrière-plan se termine ou échoue. Se déclenche uniquement pendant que la [vue agent](/docs/fr/agent-view) est ouverte dans un terminal |

2058 2058 

2059Les types `agent_needs_input` et `agent_completed` nécessitent Claude Code v2.1.198 ou ultérieur.2059Les types `agent_needs_input` et `agent_completed` nécessitent Claude Code v2.1.198 ou ultérieur.

2060 2060 


2111 SubagentStart2111 SubagentStart

2112</h3>2112</h3>

2113 2113 

2114S'exécute lorsqu'un subagent Claude Code est lancé via l'outil Agent. Supporte les matchers pour filtrer par nom de type d'agent. Pour les agents intégrés, c'est le nom de l'agent comme `general-purpose`, `Explore` ou `Plan`. Pour les [subagents personnalisés](/fr/sub-agents), c'est le champ `name` du frontmatter de l'agent, pas le nom du fichier.2114S'exécute lorsqu'un subagent Claude Code est lancé via l'outil Agent. Supporte les matchers pour filtrer par nom de type d'agent. Pour les agents intégrés, c'est le nom de l'agent comme `general-purpose`, `Explore` ou `Plan`. Pour les [subagents personnalisés](/docs/fr/sub-agents), c'est le champ `name` du frontmatter de l'agent, pas le nom du fichier.

2115 2115 

2116Pour les subagents fournis par un [plugin](/fr/plugins), l'identifiant de type d'agent est l'identifiant limité au plugin comme `my-plugin:reviewer`, pas le nom brut du frontmatter. Le deux-points place un nom limité au plugin sur le chemin d'expression régulière, donc ancrez le matcher avec `^` et `$` pour une correspondance exacte : `^my-plugin:reviewer$`.2116Pour les subagents fournis par un [plugin](/docs/fr/plugins), l'identifiant de type d'agent est l'identifiant limité au plugin comme `my-plugin:reviewer`, pas le nom brut du frontmatter. Le deux-points place un nom limité au plugin sur le chemin d'expression régulière, donc ancrez le matcher avec `^` et `$` pour une correspondance exacte : `^my-plugin:reviewer$`.

2117 2117 

2118<h4 id="subagentstart-input">2118<h4 id="subagentstart-input">

2119 Entrée SubagentStart2119 Entrée SubagentStart


2245 TaskCompleted2245 TaskCompleted

2246</h3>2246</h3>

2247 2247 

2248S'exécute lorsqu'une tâche est marquée comme complétée. Cela se déclenche dans deux situations : lorsqu'un agent marque explicitement une tâche comme complétée via l'outil TaskUpdate, ou lorsqu'un coéquipier d'une [équipe d'agents](/fr/agent-teams) termine son tour avec des tâches en cours. Utilisez ceci pour appliquer les critères d'achèvement comme passer les tests ou les vérifications de lint avant qu'une tâche ne puisse se fermer.2248S'exécute lorsqu'une tâche est marquée comme complétée. Cela se déclenche dans deux situations : lorsqu'un agent marque explicitement une tâche comme complétée via l'outil TaskUpdate, ou lorsqu'un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) termine son tour avec des tâches en cours. Utilisez ceci pour appliquer les critères d'achèvement comme passer les tests ou les vérifications de lint avant qu'une tâche ne puisse se fermer.

2249 2249 

2250Lorsqu'un hook `TaskCompleted` quitte avec le code 2, la tâche n'est pas marquée comme complétée et le message stderr est renvoyé au modèle comme commentaire. Pour arrêter complètement le coéquipier au lieu de le relancer, retournez JSON avec `{"continue": false, "stopReason": "..."}`. Les hooks TaskCompleted ne supportent pas les matchers et se déclenchent à chaque occurrence.2250Lorsqu'un hook `TaskCompleted` quitte avec le code 2, la tâche n'est pas marquée comme complétée et le message stderr est renvoyé au modèle comme commentaire. Pour arrêter complètement le coéquipier au lieu de le relancer, retournez JSON avec `{"continue": false, "stopReason": "..."}`. Les hooks TaskCompleted ne supportent pas les matchers et se déclenchent à chaque occurrence.

2251 2251 


2310S'exécute lorsque l'agent Claude Code principal a terminé sa réponse. Ne s'exécute pas si l'arrêt s'est produit en raison d'une interruption utilisateur. Les erreurs API déclenchent [StopFailure](#stopfailure) à la place.2310S'exécute lorsque l'agent Claude Code principal a terminé sa réponse. Ne s'exécute pas si l'arrêt s'est produit en raison d'une interruption utilisateur. Les erreurs API déclenchent [StopFailure](#stopfailure) à la place.

2311 2311 

2312<Tip>2312<Tip>

2313 La commande [`/goal`](/fr/goal) est un raccourci intégré pour un hook Stop basé sur un prompt limité à la session. Utilisez-la lorsque vous voulez que Claude continue à travailler jusqu'à ce qu'une condition soit remplie sans écrire de configuration de hook.2313 La commande [`/goal`](/docs/fr/goal) est un raccourci intégré pour un hook Stop basé sur un prompt limité à la session. Utilisez-la lorsque vous voulez que Claude continue à travailler jusqu'à ce qu'une condition soit remplie sans écrire de configuration de hook.

2314</Tip>2314</Tip>

2315 2315 

2316<h4 id="stop-input">2316<h4 id="stop-input">


2443 TeammateIdle2443 TeammateIdle

2444</h3>2444</h3>

2445 2445 

2446S'exécute lorsqu'un coéquipier d'une [équipe d'agents](/fr/agent-teams) est sur le point de devenir inactif après avoir terminé son tour. Utilisez ceci pour appliquer des portes de qualité avant qu'un coéquipier ne cesse de travailler, comme exiger des vérifications de lint réussies ou vérifier que les fichiers de sortie existent.2446S'exécute lorsqu'un coéquipier d'une [équipe d'agents](/docs/fr/agent-teams) est sur le point de devenir inactif après avoir terminé son tour. Utilisez ceci pour appliquer des portes de qualité avant qu'un coéquipier ne cesse de travailler, comme exiger des vérifications de lint réussies ou vérifier que les fichiers de sortie existent.

2447 2447 

2448Lorsqu'un hook `TeammateIdle` quitte avec le code 2, le coéquipier reçoit le message stderr comme commentaire et continue de travailler au lieu de devenir inactif. Pour arrêter complètement le coéquipier au lieu de le relancer, retournez JSON avec `{"continue": false, "stopReason": "..."}`. Les hooks TeammateIdle ne supportent pas les matchers et se déclenchent à chaque occurrence.2448Lorsqu'un hook `TeammateIdle` quitte avec le code 2, le coéquipier reçoit le message stderr comme commentaire et continue de travailler au lieu de devenir inactif. Pour arrêter complètement le coéquipier au lieu de le relancer, retournez JSON avec `{"continue": false, "stopReason": "..."}`. Les hooks TeammateIdle ne supportent pas les matchers et se déclenchent à chaque occurrence.

2449 2449 


2657 WorktreeCreate2657 WorktreeCreate

2658</h3>2658</h3>

2659 2659 

2660S'exécute lorsqu'un worktree est en cours de création, soit à partir de `claude --worktree` soit à partir d'un [subagent utilisant `isolation: "worktree"`](/fr/sub-agents#choose-the-subagent-scope). Par défaut, Claude Code crée la copie de travail isolée avec `git worktree`. Configurer un hook WorktreeCreate remplace ce comportement git par défaut, vous permettant d'utiliser un système de contrôle de version différent comme SVN, Perforce ou Mercurial.2660S'exécute lorsqu'un worktree est en cours de création, soit à partir de `claude --worktree` soit à partir d'un [subagent utilisant `isolation: "worktree"`](/docs/fr/sub-agents#choose-the-subagent-scope). Par défaut, Claude Code crée la copie de travail isolée avec `git worktree`. Configurer un hook WorktreeCreate remplace ce comportement git par défaut, vous permettant d'utiliser un système de contrôle de version différent comme SVN, Perforce ou Mercurial.

2661 2661 

2662Parce que le hook remplace le comportement par défaut entièrement, [`.worktreeinclude`](/fr/worktrees#copy-gitignored-files-into-worktrees) n'est pas traité. Si vous avez besoin de copier les fichiers de configuration locaux comme `.env` dans le nouveau worktree, faites-le à l'intérieur de votre script de hook.2662Parce que le hook remplace le comportement par défaut entièrement, [`.worktreeinclude`](/docs/fr/worktrees#copy-gitignored-files-into-worktrees) n'est pas traité. Si vous avez besoin de copier les fichiers de configuration locaux comme `.env` dans le nouveau worktree, faites-le à l'intérieur de votre script de hook.

2663 2663 

2664Le hook doit retourner le chemin absolu du répertoire du worktree créé. Claude Code utilise ce chemin comme répertoire de travail pour la session isolée. Consultez [Sortie WorktreeCreate](#worktreecreate-output) pour savoir comment chaque type de hook retourne le chemin.2664Le hook doit retourner le chemin absolu du répertoire du worktree créé. Claude Code utilise ce chemin comme répertoire de travail pour la session isolée. Consultez [Sortie WorktreeCreate](#worktreecreate-output) pour savoir comment chaque type de hook retourne le chemin.

2665 2665 


3112 Vérifier plusieurs conditions avant d'arrêter3112 Vérifier plusieurs conditions avant d'arrêter

3113</h3>3113</h3>

3114 3114 

3115Ce hook `Stop` utilise un prompt détaillé pour vérifier trois conditions avant d'autoriser Claude à s'arrêter. Les hooks `SubagentStop` utilisent le même format pour évaluer si un [subagent](/fr/sub-agents) doit s'arrêter. Si `"ok"` est `false`, Claude continue de travailler avec la raison fournie comme sa prochaine instruction :3115Ce hook `Stop` utilise un prompt détaillé pour vérifier trois conditions avant d'autoriser Claude à s'arrêter. Les hooks `SubagentStop` utilisent le même format pour évaluer si un [subagent](/docs/fr/sub-agents) doit s'arrêter. Si `"ok"` est `false`, Claude continue de travailler avec la raison fournie comme sa prochaine instruction :

3116 3116 

3117```json theme={null}3117```json theme={null}

3118{3118{


3385 3385 

3386Pour plus de détails granulaires sur la correspondance des hooks, définissez `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` pour voir des lignes de journal supplémentaires telles que les comptes de matcher de hook et la correspondance de requête.3386Pour plus de détails granulaires sur la correspondance des hooks, définissez `CLAUDE_CODE_DEBUG_LOG_LEVEL=verbose` pour voir des lignes de journal supplémentaires telles que les comptes de matcher de hook et la correspondance de requête.

3387 3387 

3388Pour dépanner les problèmes courants comme les hooks qui ne se déclenchent pas, les hooks Stop qui continuent à bloquer, ou les erreurs de configuration, consultez [Limitations et dépannage](/fr/hooks-guide#limitations-and-troubleshooting) dans le guide. Pour une procédure de diagnostic plus large couvrant `/context`, `/doctor` et la précédence des paramètres, consultez [Déboguer votre configuration](/fr/debug-your-config).3388Pour dépanner les problèmes courants comme les hooks qui ne se déclenchent pas, les hooks Stop qui continuent à bloquer, ou les erreurs de configuration, consultez [Limitations et dépannage](/docs/fr/hooks-guide#limitations-and-troubleshooting) dans le guide. Pour une procédure de diagnostic plus large couvrant `/context`, `/doctor` et la précédence des paramètres, consultez [Déboguer votre configuration](/docs/fr/debug-your-config).

hooks-guide.md +50 −50

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](/fr/skills) pour donner à Claude des instructions supplémentaires et des commandes exécutables, [subagents](/fr/sub-agents) pour exécuter des tâches dans des contextes isolés, et [plugins](/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) 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](/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).

17</Tip>17</Tip>

18 18 

19<h2 id="set-up-your-first-hook">19<h2 id="set-up-your-first-hook">


85 Ce que vous pouvez automatiser85 Ce que vous pouvez automatiser

86</h2>86</h2>

87 87 

88Les hooks vous permettent d'exécuter du code à des points clés du cycle de vie de Claude Code : formater les fichiers après les modifications, bloquer les commandes avant leur exécution, envoyer des notifications lorsque Claude a besoin d'une entrée, injecter du contexte au démarrage de la session, et bien plus. Pour la liste complète des événements de hook, consultez la [référence des Hooks](/fr/hooks#hook-lifecycle).88Les hooks vous permettent d'exécuter du code à des points clés du cycle de vie de Claude Code : formater les fichiers après les modifications, bloquer les commandes avant leur exécution, envoyer des notifications lorsque Claude a besoin d'une entrée, injecter du contexte au démarrage de la session, et bien plus. Pour la liste complète des événements de hook, consultez la [référence des Hooks](/docs/fr/hooks#hook-lifecycle).

89 89 

90Chaque exemple inclut un bloc de configuration prêt à l'emploi que vous ajoutez à un [fichier de paramètres](#configure-hook-location).90Chaque exemple inclut un bloc de configuration prêt à l'emploi que vous ajoutez à un [fichier de paramètres](#configure-hook-location).

91 91 

92Pour un exemple de production de hooks qui exécutent un examen de modèle séparé et renvoient les résultats dans la session, consultez [comment le plugin `security-guidance` s'intègre à Claude Code](/fr/security-guidance#how-the-plugin-integrates-with-claude-code).92Pour un exemple de production de hooks qui exécutent un examen de modèle séparé et renvoient les résultats dans la session, consultez [comment le plugin `security-guidance` s'intègre à Claude Code](/docs/fr/security-guidance#how-the-plugin-integrates-with-claude-code).

93 93 

94<h3 id="get-notified-when-claude-needs-input">94<h3 id="get-notified-when-claude-needs-input">

95 Être notifié lorsque Claude a besoin d'une entrée95 Être notifié lorsque Claude a besoin d'une entrée


181| `elicitation_dialog` | Un serveur MCP ouvre un formulaire d'élicitation |181| `elicitation_dialog` | Un serveur MCP ouvre un formulaire d'élicitation |

182| `elicitation_complete` | Un formulaire d'élicitation MCP est soumis ou fermé |182| `elicitation_complete` | Un formulaire d'élicitation MCP est soumis ou fermé |

183| `elicitation_response` | Une réponse d'élicitation MCP est renvoyée au serveur |183| `elicitation_response` | Une réponse d'élicitation MCP est renvoyée au serveur |

184| `agent_needs_input` | Une session en arrière-plan commence à attendre votre entrée. Se déclenche uniquement lorsque la [vue agent](/fr/agent-view) est ouverte |184| `agent_needs_input` | Une session en arrière-plan commence à attendre votre entrée. Se déclenche uniquement lorsque la [vue agent](/docs/fr/agent-view) est ouverte |

185| `agent_completed` | Une session en arrière-plan se termine ou échoue. Se déclenche uniquement lorsque la [vue agent](/fr/agent-view) est ouverte |185| `agent_completed` | Une session en arrière-plan se termine ou échoue. Se déclenche uniquement lorsque la [vue agent](/docs/fr/agent-view) est ouverte |

186 186 

187Les matchers `agent_needs_input` et `agent_completed` nécessitent Claude Code v2.1.198 ou version ultérieure.187Les matchers `agent_needs_input` et `agent_completed` nécessitent Claude Code v2.1.198 ou version ultérieure.

188 188 

189Tapez `/hooks` et sélectionnez `Notification` pour confirmer que le hook est enregistré. Pour le schéma d'événement complet, consultez la [référence Notification](/fr/hooks#notification).189Tapez `/hooks` et sélectionnez `Notification` pour confirmer que le hook est enregistré. Pour le schéma d'événement complet, consultez la [référence Notification](/docs/fr/hooks#notification).

190 190 

191<h3 id="auto-format-code-after-edits">191<h3 id="auto-format-code-after-edits">

192 Formater automatiquement le code après les modifications192 Formater automatiquement le code après les modifications


309}309}

310```310```

311 311 

312Vous pouvez remplacer `echo` par n'importe quelle commande qui produit une sortie dynamique, comme `git log --oneline -5` pour afficher les commits récents. Pour injecter du contexte au démarrage de chaque session, envisagez d'utiliser [CLAUDE.md](/fr/memory) à la place. Pour les variables d'environnement, consultez [`CLAUDE_ENV_FILE`](/fr/hooks#persist-environment-variables) dans la référence.312Vous pouvez remplacer `echo` par n'importe quelle commande qui produit une sortie dynamique, comme `git log --oneline -5` pour afficher les commits récents. Pour injecter du contexte au démarrage de chaque session, envisagez d'utiliser [CLAUDE.md](/docs/fr/memory) à la place. Pour les variables d'environnement, consultez [`CLAUDE_ENV_FILE`](/docs/fr/hooks#persist-environment-variables) dans la référence.

313 313 

314<h3 id="audit-configuration-changes">314<h3 id="audit-configuration-changes">

315 Auditer les modifications de configuration315 Auditer les modifications de configuration


337}337}

338```338```

339 339 

340Le matcher filtre par type de configuration : `user_settings`, `project_settings`, `local_settings`, `policy_settings`, ou `skills`. Pour bloquer une modification de prendre effet, quittez avec le code 2 ou retournez `{"decision": "block"}`. Consultez la [référence ConfigChange](/fr/hooks#configchange) pour le schéma d'entrée complet.340Le matcher filtre par type de configuration : `user_settings`, `project_settings`, `local_settings`, `policy_settings`, ou `skills`. Pour bloquer une modification de prendre effet, quittez avec le code 2 ou retournez `{"decision": "block"}`. Consultez la [référence ConfigChange](/docs/fr/hooks#configchange) pour le schéma d'entrée complet.

341 341 

342<h3 id="reload-environment-when-directory-or-files-change">342<h3 id="reload-environment-when-directory-or-files-change">

343 Recharger l'environnement lorsque le répertoire ou les fichiers changent343 Recharger l'environnement lorsque le répertoire ou les fichiers changent


376 376 

377Exécutez `direnv allow` une fois dans chaque répertoire qui a un `.envrc` afin que direnv soit autorisé à le charger. Si vous utilisez devbox ou nix à la place de direnv, le même modèle fonctionne avec `devbox shellenv` ou `devbox global shellenv` à la place de `direnv export bash`.377Exécutez `direnv allow` une fois dans chaque répertoire qui a un `.envrc` afin que direnv soit autorisé à le charger. Si vous utilisez devbox ou nix à la place de direnv, le même modèle fonctionne avec `devbox shellenv` ou `devbox global shellenv` à la place de `direnv export bash`.

378 378 

379Pour réagir à des fichiers spécifiques au lieu de chaque changement de répertoire, utilisez `FileChanged` avec un `matcher` listant les noms de fichiers à surveiller, séparés par `|`. Lors de la construction de la liste de surveillance, Claude Code divise cette valeur en noms de fichiers littéraux plutôt que de l'évaluer comme une regex. Consultez [FileChanged](/fr/hooks#filechanged) pour savoir comment la même valeur filtre également les groupes de hooks qui s'exécutent lorsqu'un fichier change. Cet exemple surveille `.envrc` et `.env` dans le répertoire de travail :379Pour réagir à des fichiers spécifiques au lieu de chaque changement de répertoire, utilisez `FileChanged` avec un `matcher` listant les noms de fichiers à surveiller, séparés par `|`. Lors de la construction de la liste de surveillance, Claude Code divise cette valeur en noms de fichiers littéraux plutôt que de l'évaluer comme une regex. Consultez [FileChanged](/docs/fr/hooks#filechanged) pour savoir comment la même valeur filtre également les groupes de hooks qui s'exécutent lorsqu'un fichier change. Cet exemple surveille `.envrc` et `.env` dans le répertoire de travail :

380 380 

381```json theme={null}381```json theme={null}

382{382{


396}396}

397```397```

398 398 

399Consultez les entrées de référence [CwdChanged](/fr/hooks#cwdchanged) et [FileChanged](/fr/hooks#filechanged) pour les schémas d'entrée, la sortie `watchPaths`, et les détails de `CLAUDE_ENV_FILE`.399Consultez les entrées de référence [CwdChanged](/docs/fr/hooks#cwdchanged) et [FileChanged](/docs/fr/hooks#filechanged) pour les schémas d'entrée, la sortie `watchPaths`, et les détails de `CLAUDE_ENV_FILE`.

400 400 

401<h3 id="auto-approve-specific-permission-prompts">401<h3 id="auto-approve-specific-permission-prompts">

402 Approuver automatiquement les invites de permission spécifiques402 Approuver automatiquement les invites de permission spécifiques


431Pour définir un mode de permission spécifique à la place, la sortie de votre hook peut inclure un tableau `updatedPermissions` avec une entrée `setMode`. La valeur `mode` est n'importe quel mode de permission comme `default`, `acceptEdits`, ou `bypassPermissions`, et `destination: "session"` l'applique pour la session actuelle uniquement.431Pour définir un mode de permission spécifique à la place, la sortie de votre hook peut inclure un tableau `updatedPermissions` avec une entrée `setMode`. La valeur `mode` est n'importe quel mode de permission comme `default`, `acceptEdits`, ou `bypassPermissions`, et `destination: "session"` l'applique pour la session actuelle uniquement.

432 432 

433<Note>433<Note>

434 `bypassPermissions` ne s'applique que si la session a été lancée avec le mode bypass déjà disponible : `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, ou `permissions.defaultMode: "bypassPermissions"` dans les paramètres, et non désactivé par [`permissions.disableBypassPermissionsMode`](/fr/permissions#managed-settings). Il n'est jamais persisté en tant que `defaultMode`.434 `bypassPermissions` ne s'applique que si la session a été lancée avec le mode bypass déjà disponible : `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, ou `permissions.defaultMode: "bypassPermissions"` dans les paramètres, et non désactivé par [`permissions.disableBypassPermissionsMode`](/docs/fr/permissions#managed-settings). Il n'est jamais persisté en tant que `defaultMode`.

435</Note>435</Note>

436 436 

437Pour basculer la session vers `acceptEdits`, votre hook écrit ce JSON sur stdout :437Pour basculer la session vers `acceptEdits`, votre hook écrit ce JSON sur stdout :


450}450}

451```451```

452 452 

453Gardez le matcher aussi étroit que possible. Correspondre à `.*` ou laisser le matcher vide approuverait automatiquement chaque invite de permission, y compris les écritures de fichiers et les commandes shell. Consultez la [référence PermissionRequest](/fr/hooks#permissionrequest-decision-control) pour l'ensemble complet des champs de décision.453Gardez le matcher aussi étroit que possible. Correspondre à `.*` ou laisser le matcher vide approuverait automatiquement chaque invite de permission, y compris les écritures de fichiers et les commandes shell. Consultez la [référence PermissionRequest](/docs/fr/hooks#permissionrequest-decision-control) pour l'ensemble complet des champs de décision.

454 454 

455<h2 id="how-hooks-work">455<h2 id="how-hooks-work">

456 Comment fonctionnent les hooks456 Comment fonctionnent les hooks


478| `TaskCompleted` | When a task is being marked as completed |478| `TaskCompleted` | When a task is being marked as completed |

479| `Stop` | When Claude finishes responding |479| `Stop` | When Claude finishes responding |

480| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |480| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

481| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |481| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |

482| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |482| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

483| `ConfigChange` | When a configuration file changes during a session |483| `ConfigChange` | When a configuration file changes during a session |

484| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |484| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

485| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |485| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

486| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |486| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |

487| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |487| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |

488| `PreCompact` | Before context compaction |488| `PreCompact` | Before context compaction |

489| `PostCompact` | After context compaction completes |489| `PostCompact` | After context compaction completes |

490| `Elicitation` | When an MCP server requests user input during a tool call |490| `Elicitation` | When an MCP server requests user input during a tool call |


494Chaque hook a un `type` qui détermine comment il s'exécute. La plupart des hooks utilisent `"type": "command"`, qui exécute une commande shell. Quatre autres types sont disponibles :494Chaque hook a un `type` qui détermine comment il s'exécute. La plupart des hooks utilisent `"type": "command"`, qui exécute une commande shell. Quatre autres types sont disponibles :

495 495 

496* `"type": "http"` : POST les données d'événement vers une URL. Consultez [Hooks HTTP](#http-hooks).496* `"type": "http"` : POST les données d'événement vers une URL. Consultez [Hooks HTTP](#http-hooks).

497* `"type": "mcp_tool"` : appeler un outil sur un serveur MCP déjà connecté. Consultez [Champs de hooks d'outil MCP](/fr/hooks#mcp-tool-hook-fields).497* `"type": "mcp_tool"` : appeler un outil sur un serveur MCP déjà connecté. Consultez [Champs de hooks d'outil MCP](/docs/fr/hooks#mcp-tool-hook-fields).

498* `"type": "prompt"` : évaluation LLM à un seul tour. Consultez [Hooks basés sur des invites](#prompt-based-hooks).498* `"type": "prompt"` : évaluation LLM à un seul tour. Consultez [Hooks basés sur des invites](#prompt-based-hooks).

499* `"type": "agent"` : vérification multi-tour avec accès aux outils. Les hooks d'agent sont expérimentaux et peuvent changer. Consultez [Hooks basés sur des agents](#agent-based-hooks).499* `"type": "agent"` : vérification multi-tour avec accès aux outils. Les hooks d'agent sont expérimentaux et peuvent changer. Consultez [Hooks basés sur des agents](#agent-based-hooks).

500 500 


556}556}

557```557```

558 558 

559Votre script peut analyser ce JSON et agir sur n'importe lequel de ces champs. Les hooks `UserPromptSubmit` obtiennent le texte `prompt` à la place, les hooks `SessionStart` obtiennent la `source` (startup, resume, clear, compact), et ainsi de suite. Consultez [Champs d'entrée communs](/fr/hooks#common-input-fields) dans la référence pour les champs partagés, et la section de chaque événement pour les schémas spécifiques à l'événement.559Votre script peut analyser ce JSON et agir sur n'importe lequel de ces champs. Les hooks `UserPromptSubmit` obtiennent le texte `prompt` à la place, les hooks `SessionStart` obtiennent la `source` (startup, resume, clear, compact), et ainsi de suite. Consultez [Champs d'entrée communs](/docs/fr/hooks#common-input-fields) dans la référence pour les champs partagés, et la section de chaque événement pour les schémas spécifiques à l'événement.

560 560 

561<h4 id="hook-output">561<h4 id="hook-output">

562 Sortie du hook562 Sortie du hook


579 579 

580Le code de sortie détermine ce qui se passe ensuite :580Le code de sortie détermine ce qui se passe ensuite :

581 581 

582* **Exit 0** : le hook ne signale aucune objection et l'action se poursuit normalement. Pour un hook `PreToolUse`, cela n'approuve pas l'appel d'outil : le [flux de permission](/fr/permissions) normal s'applique toujours. Pour les hooks `UserPromptSubmit`, `UserPromptExpansion` et `SessionStart`, tout ce que vous écrivez sur stdout est ajouté au contexte de Claude.582* **Exit 0** : le hook ne signale aucune objection et l'action se poursuit normalement. Pour un hook `PreToolUse`, cela n'approuve pas l'appel d'outil : le [flux de permission](/docs/fr/permissions) normal s'applique toujours. Pour les hooks `UserPromptSubmit`, `UserPromptExpansion` et `SessionStart`, tout ce que vous écrivez sur stdout est ajouté au contexte de Claude.

583* **Exit 2** : l'action est bloquée. Écrivez une raison sur stderr, et Claude la reçoit comme retour afin qu'il puisse s'ajuster. Certains événements ne peuvent pas être bloqués : pour `SessionStart`, `Setup`, `Notification` et autres, exit 2 affiche stderr à l'utilisateur et l'exécution continue. Consultez [comportement du code de sortie 2 par événement](/fr/hooks#exit-code-2-behavior-per-event) pour la liste complète.583* **Exit 2** : l'action est bloquée. Écrivez une raison sur stderr, et Claude la reçoit comme retour afin qu'il puisse s'ajuster. Certains événements ne peuvent pas être bloqués : pour `SessionStart`, `Setup`, `Notification` et autres, exit 2 affiche stderr à l'utilisateur et l'exécution continue. Consultez [comportement du code de sortie 2 par événement](/docs/fr/hooks#exit-code-2-behavior-per-event) pour la liste complète.

584* **Tout autre code de sortie** : l'action se poursuit. La transcription affiche un avis `<hook name> hook error` suivi de la première ligne de stderr ; le stderr complet va au [journal de débogage](/fr/hooks#debug-hooks).584* **Tout autre code de sortie** : l'action se poursuit. La transcription affiche un avis `<hook name> hook error` suivi de la première ligne de stderr ; le stderr complet va au [journal de débogage](/docs/fr/hooks#debug-hooks).

585 585 

586<h4 id="structured-json-output">586<h4 id="structured-json-output">

587 Sortie JSON structurée587 Sortie JSON structurée


607 607 

608Avec `"deny"`, Claude Code annule l'appel d'outil et renvoie `permissionDecisionReason` à Claude. Ces valeurs `permissionDecision` sont spécifiques à `PreToolUse` :608Avec `"deny"`, Claude Code annule l'appel d'outil et renvoie `permissionDecisionReason` à Claude. Ces valeurs `permissionDecision` sont spécifiques à `PreToolUse` :

609 609 

610* `"allow"` : ignorer l'invite de permission interactive. Les règles de refus et d'ask, y compris les listes de refus gérées par l'entreprise, s'appliquent toujours, tout comme les invites pour les outils de connecteur [que votre organisation a définis sur `ask`](/fr/mcp#organization-controls-on-connector-tools) et les outils MCP marqués [`requiresUserInteraction`](/fr/mcp#require-approval-for-a-specific-tool)610* `"allow"` : ignorer l'invite de permission interactive. Les règles de refus et d'ask, y compris les listes de refus gérées par l'entreprise, s'appliquent toujours, tout comme les invites pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool)

611* `"deny"` : annuler l'appel d'outil et envoyer la raison à Claude611* `"deny"` : annuler l'appel d'outil et envoyer la raison à Claude

612* `"ask"` : afficher l'invite de permission à l'utilisateur comme d'habitude612* `"ask"` : afficher l'invite de permission à l'utilisateur comme d'habitude

613 613 

614Une quatrième valeur, `"defer"`, est disponible en [mode non-interactif](/fr/headless) avec le drapeau `-p`. Elle quitte le processus avec l'appel d'outil préservé afin qu'un wrapper SDK Agent puisse collecter l'entrée et reprendre. Consultez [Différer un appel d'outil pour plus tard](/fr/hooks#defer-a-tool-call-for-later) dans la référence.614Une quatrième valeur, `"defer"`, est disponible en [mode non-interactif](/docs/fr/headless) avec le drapeau `-p`. Elle quitte le processus avec l'appel d'outil préservé afin qu'un wrapper SDK Agent puisse collecter l'entrée et reprendre. Consultez [Différer un appel d'outil pour plus tard](/docs/fr/hooks#defer-a-tool-call-for-later) dans la référence.

615 615 

616Retourner `"allow"` ignore l'invite interactive mais ne remplace pas les [règles de permission](/fr/permissions#manage-permissions). Si une règle de refus correspond à l'appel d'outil, l'appel est bloqué même lorsque votre hook retourne `"allow"`. Si une règle d'ask correspond, l'utilisateur est toujours invité, tout comme les outils de connecteur [que votre organisation a définis sur `ask`](/fr/mcp#organization-controls-on-connector-tools) et les outils MCP marqués [`requiresUserInteraction`](/fr/mcp#require-approval-for-a-specific-tool). Cela signifie que les règles de refus de n'importe quel périmètre de paramètres, y compris les [paramètres gérés](/fr/settings#settings-files), ont toujours la priorité sur les approbations de hook.616Retourner `"allow"` ignore l'invite interactive mais ne remplace pas les [règles de permission](/docs/fr/permissions#manage-permissions). Si une règle de refus correspond à l'appel d'outil, l'appel est bloqué même lorsque votre hook retourne `"allow"`. Si une règle d'ask correspond, l'utilisateur est toujours invité, tout comme les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) et les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool). Cela signifie que les règles de refus de n'importe quel périmètre de paramètres, y compris les [paramètres gérés](/docs/fr/settings#settings-files), ont toujours la priorité sur les approbations de hook.

617 617 

618D'autres événements utilisent des modèles de décision différents. Par exemple, les hooks `PostToolUse` et `Stop` utilisent un champ `decision: "block"` au niveau supérieur, tandis que `PermissionRequest` utilise `hookSpecificOutput.decision.behavior`. Consultez le [tableau récapitulatif](/fr/hooks#decision-control) dans la référence pour une ventilation complète par événement.618D'autres événements utilisent des modèles de décision différents. Par exemple, les hooks `PostToolUse` et `Stop` utilisent un champ `decision: "block"` au niveau supérieur, tandis que `PermissionRequest` utilise `hookSpecificOutput.decision.behavior`. Consultez le [tableau récapitulatif](/docs/fr/hooks#decision-control) dans la référence pour une ventilation complète par événement.

619 619 

620Pour les hooks `UserPromptSubmit`, utilisez `hookSpecificOutput.additionalContext` à la place pour injecter du texte dans le contexte de Claude. Imbriquez `additionalContext` à l'intérieur de `hookSpecificOutput` ; si vous le placez au niveau supérieur du JSON, Claude Code l'ignore silencieusement. Par exemple, cette sortie ajoute l'état de la branche actuelle à chaque invite :620Pour les hooks `UserPromptSubmit`, utilisez `hookSpecificOutput.additionalContext` à la place pour injecter du texte dans le contexte de Claude. Imbriquez `additionalContext` à l'intérieur de `hookSpecificOutput` ; si vous le placez au niveau supérieur du JSON, Claude Code l'ignore silencieusement. Par exemple, cette sortie ajoute l'état de la branche actuelle à chaque invite :

621 621 


628}628}

629```629```

630 630 

631Consultez [Contrôle de décision UserPromptSubmit](/fr/hooks#userpromptsubmit-decision-control) pour la forme de sortie complète, y compris le blocage des invites et la définition du titre de la session.631Consultez [Contrôle de décision UserPromptSubmit](/docs/fr/hooks#userpromptsubmit-decision-control) pour la forme de sortie complète, y compris le blocage des invites et la définition du titre de la session.

632 632 

633Les hooks avec `type: "prompt"` gèrent la sortie différemment : consultez [Hooks basés sur des invites](#prompt-based-hooks).633Les hooks avec `type: "prompt"` gèrent la sortie différemment : consultez [Hooks basés sur des invites](#prompt-based-hooks).

634 634 


653}653}

654```654```

655 655 

656Le 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. {/* min-version: 2.1.191 */}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](/fr/hooks#matcher-patterns) pour savoir comment les noms simples et les expressions régulières sont évalués.656Le 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. {/* min-version: 2.1.191 */}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.

657 657 

658<Note>658<Note>

659 Claude peut également créer ou modifier des fichiers en exécutant des commandes shell via l'outil `Bash`. 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`](/fr/hooks#stop) qui analyse l'arborescence de travail une fois par tour. Pour une couverture par appel à la place, correspondez également à `Bash` et faites en sorte que votre script liste les fichiers modifiés et non suivis avec `git status --porcelain`.659 Claude peut également créer ou modifier des fichiers en exécutant des commandes shell via l'outil `Bash`. 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` et faites en sorte que votre script liste les fichiers modifiés et non suivis avec `git status --porcelain`.

660</Note>660</Note>

661 661 

662Chaque type d'événement correspond à un champ spécifique :662Chaque type d'événement correspond à un champ spécifique :


676| `InstructionsLoaded` | raison du chargement | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |676| `InstructionsLoaded` | raison du chargement | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |

677| `Elicitation` | nom du serveur MCP | vos noms de serveur MCP configurés |677| `Elicitation` | nom du serveur MCP | vos noms de serveur MCP configurés |

678| `ElicitationResult` | nom du serveur MCP | mêmes valeurs que `Elicitation` |678| `ElicitationResult` | nom du serveur MCP | mêmes valeurs que `Elicitation` |

679| `FileChanged` | noms de fichiers littéraux à surveiller (consultez [FileChanged](/fr/hooks#filechanged)) | `.envrc\|.env` |679| `FileChanged` | noms de fichiers littéraux à surveiller (consultez [FileChanged](/docs/fr/hooks#filechanged)) | `.envrc\|.env` |

680| `UserPromptExpansion` | nom de la commande | vos noms de skill ou de commande |680| `UserPromptExpansion` | nom de la commande | vos noms de skill ou de commande |

681| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `MessageDisplay` | pas de support de matcher | se déclenche toujours à chaque occurrence |681| `UserPromptSubmit`, `PostToolBatch`, `Stop`, `TeammateIdle`, `TaskCreated`, `TaskCompleted`, `WorktreeCreate`, `WorktreeRemove`, `CwdChanged`, `MessageDisplay` | pas de support de matcher | se déclenche toujours à chaque occurrence |

682 682 


706 </Tab>706 </Tab>

707 707 

708 <Tab title="Correspondre aux outils MCP">708 <Tab title="Correspondre aux outils MCP">

709 Les outils MCP utilisent une convention de nommage différente des outils intégrés : `mcp__<server>__<tool>`, où `<server>` est le nom du serveur MCP et `<tool>` est l'outil qu'il fournit. Par exemple, `mcp__github__search_repositories` ou `mcp__filesystem__read_file`. Les outils d'un [serveur fourni par plugin](/fr/mcp#plugin-provided-mcp-servers) utilisent un segment de serveur délimité à la place, comme `mcp__plugin_my-plugin_db__query`. Utilisez un matcher regex pour cibler tous les outils d'un serveur spécifique, ou correspondre entre les serveurs avec un modèle comme `mcp__.*__write.*`. Consultez [Correspondre aux outils MCP](/fr/hooks#match-mcp-tools) dans la référence pour la liste complète des exemples.709 Les outils MCP utilisent une convention de nommage différente des outils intégrés : `mcp__<server>__<tool>`, où `<server>` est le nom du serveur MCP et `<tool>` est l'outil qu'il fournit. Par exemple, `mcp__github__search_repositories` ou `mcp__filesystem__read_file`. Les outils d'un [serveur fourni par plugin](/docs/fr/mcp#plugin-provided-mcp-servers) utilisent un segment de serveur délimité à la place, comme `mcp__plugin_my-plugin_db__query`. Utilisez un matcher regex pour cibler tous les outils d'un serveur spécifique, ou correspondre entre les serveurs avec un modèle comme `mcp__.*__write.*`. Consultez [Correspondre aux outils MCP](/docs/fr/hooks#match-mcp-tools) dans la référence pour la liste complète des exemples.

710 710 

711 La commande ci-dessous extrait le nom de l'outil de l'entrée JSON du hook avec `jq` et l'écrit sur stderr. L'écriture sur stderr garde stdout propre pour la sortie JSON et envoie le message au [journal de débogage](/fr/hooks#debug-hooks) :711 La commande ci-dessous extrait le nom de l'outil de l'entrée JSON du hook avec `jq` et l'écrit sur stderr. L'écriture sur stderr garde stdout propre pour la sortie JSON et envoie le message au [journal de débogage](/docs/fr/hooks#debug-hooks) :

712 712 

713 ```json theme={null}713 ```json theme={null}

714 {714 {


752 </Tab>752 </Tab>

753</Tabs>753</Tabs>

754 754 

755Pour la syntaxe complète du matcher, consultez la [référence des Hooks](/fr/hooks#configuration).755Pour la syntaxe complète du matcher, consultez la [référence des Hooks](/docs/fr/hooks#configuration).

756 756 

757<h4 id="filter-by-tool-name-and-arguments-with-the-if-field">757<h4 id="filter-by-tool-name-and-arguments-with-the-if-field">

758 Filtrer par nom d'outil et arguments avec le champ `if`758 Filtrer par nom d'outil et arguments avec le champ `if`

759</h4>759</h4>

760 760 

761Le champ `if` utilise la [syntaxe des règles de permission](/fr/permissions) pour filtrer les hooks par nom d'outil et arguments ensemble, afin que le processus du hook ne soit généré que lorsque l'appel d'outil correspond. Cela va au-delà du `matcher`, qui filtre au niveau du groupe par nom d'outil uniquement.761Le champ `if` utilise la [syntaxe des règles de permission](/docs/fr/permissions) pour filtrer les hooks par nom d'outil et arguments ensemble, afin que le processus du hook ne soit généré que lorsque l'appel d'outil correspond. Cela va au-delà du `matcher`, qui filtre au niveau du groupe par nom d'outil uniquement.

762 762 

763Par exemple, pour exécuter un hook uniquement lorsque Claude utilise des commandes `git` plutôt que toutes les commandes Bash :763Par exemple, pour exécuter un hook uniquement lorsque Claude utilise des commandes `git` plutôt que toutes les commandes Bash :

764 764 


791| `Bash(git *)` | `echo $(date)` | non | aucune sous-commande ne correspond à `git *` |791| `Bash(git *)` | `echo $(date)` | non | aucune sous-commande ne correspond à `git *` |

792| `Bash(git push *)` | `echo $(date)` | oui | les modèles qui spécifient plus que le nom de la commande exécutent le hook de toute façon sur `$()`, les backticks, ou `$VAR` |792| `Bash(git push *)` | `echo $(date)` | oui | les modèles qui spécifient plus que le nom de la commande exécutent le hook de toute façon sur `$()`, les backticks, ou `$VAR` |

793 793 

794Le filtre échoue également de manière ouverte, exécutant votre hook indépendamment du modèle, lorsque la commande Bash ne peut pas être analysée. Parce que le filtre est au mieux un effort, utilisez le [système de permission](/fr/permissions) plutôt qu'un hook pour appliquer un allow ou deny dur.794Le filtre échoue également de manière ouverte, exécutant votre hook indépendamment du modèle, lorsque la commande Bash ne peut pas être analysée. Parce que le filtre est au mieux un effort, utilisez le [système de permission](/docs/fr/permissions) plutôt qu'un hook pour appliquer un allow ou deny dur.

795 795 

796Le champ `if` accepte les mêmes modèles que les règles de permission : `"Bash(git *)"`, `"Edit(*.ts)"`, et ainsi de suite. Pour correspondre à plusieurs noms d'outils, utilisez des gestionnaires séparés chacun avec sa propre valeur `if`, ou correspondez au niveau du `matcher` où l'alternation par pipe est supportée.796Le champ `if` accepte les mêmes modèles que les règles de permission : `"Bash(git *)"`, `"Edit(*.ts)"`, et ainsi de suite. Pour correspondre à plusieurs noms d'outils, utilisez des gestionnaires séparés chacun avec sa propre valeur `if`, ou correspondez au niveau du `matcher` où l'alternation par pipe est supportée.

797 797 


809| `.claude/settings.json` | Projet unique | Oui, peut être commité au repo |809| `.claude/settings.json` | Projet unique | Oui, peut être commité au repo |

810| `.claude/settings.local.json` | Projet unique | Non, gitignored lorsque Claude Code le crée |810| `.claude/settings.local.json` | Projet unique | Non, gitignored lorsque Claude Code le crée |

811| Paramètres de politique gérés | À l'échelle de l'organisation | Oui, contrôlé par l'administrateur |811| Paramètres de politique gérés | À l'échelle de l'organisation | Oui, contrôlé par l'administrateur |

812| [Plugin](/fr/plugins) `hooks/hooks.json` | Lorsque le plugin est activé | Oui, fourni avec le plugin |812| [Plugin](/docs/fr/plugins) `hooks/hooks.json` | Lorsque le plugin est activé | Oui, fourni avec le plugin |

813| [Skill](/fr/skills) ou [agent](/fr/sub-agents) frontmatter | Pendant que le skill ou l'agent est actif | Oui, défini dans le fichier du composant |813| [Skill](/docs/fr/skills) ou [agent](/docs/fr/sub-agents) frontmatter | Pendant que le skill ou l'agent est actif | Oui, défini dans le fichier du composant |

814 814 

815Exécutez [`/hooks`](/fr/hooks#the-%2Fhooks-menu) dans Claude Code pour parcourir tous les hooks configurés regroupés par événement.815Exécutez [`/hooks`](/docs/fr/hooks#the-%2Fhooks-menu) dans Claude Code pour parcourir tous les hooks configurés regroupés par événement.

816 816 

817Pour désactiver les hooks, définissez `"disableAllHooks": true` dans votre fichier de paramètres. Les hooks configurés dans les paramètres gérés s'exécutent toujours sauf si `disableAllHooks` est également défini là.817Pour désactiver les hooks, définissez `"disableAllHooks": true` dans votre fichier de paramètres. Les hooks configurés dans les paramètres gérés s'exécutent toujours sauf si `disableAllHooks` est également défini là.

818 818 


851}851}

852```852```

853 853 

854Pour les options de configuration complètes, consultez [Hooks basés sur des invites](/fr/hooks#prompt-based-hooks) dans la référence.854Pour les options de configuration complètes, consultez [Hooks basés sur des invites](/docs/fr/hooks#prompt-based-hooks) dans la référence.

855 855 

856<h2 id="agent-based-hooks">856<h2 id="agent-based-hooks">

857 Hooks basés sur des agents857 Hooks basés sur des agents

858</h2>858</h2>

859 859 

860<Warning>860<Warning>

861 Les hooks d'agent sont expérimentaux. Le comportement et la configuration peuvent changer dans les versions futures. Pour les workflows de production, préférez les [hooks de commande](/fr/hooks#command-hook-fields).861 Les hooks d'agent sont expérimentaux. Le comportement et la configuration peuvent changer dans les versions futures. Pour les workflows de production, préférez les [hooks de commande](/docs/fr/hooks#command-hook-fields).

862</Warning>862</Warning>

863 863 

864Lorsque la vérification nécessite d'inspecter des fichiers ou d'exécuter des commandes, utilisez les hooks `type: "agent"`. Contrairement aux hooks d'invite qui font un seul appel LLM, les hooks d'agent génèrent un subagent qui peut lire des fichiers, rechercher du code et utiliser d'autres outils pour vérifier les conditions avant de retourner une décision.864Lorsque la vérification nécessite d'inspecter des fichiers ou d'exécuter des commandes, utilisez les hooks `type: "agent"`. Contrairement aux hooks d'invite qui font un seul appel LLM, les hooks d'agent génèrent un subagent qui peut lire des fichiers, rechercher du code et utiliser d'autres outils pour vérifier les conditions avant de retourner une décision.


887 887 

888Utilisez les hooks d'invite lorsque les données d'entrée du hook seules suffisent pour prendre une décision. Utilisez les hooks d'agent lorsque vous avez besoin de vérifier quelque chose par rapport à l'état réel de la base de code.888Utilisez les hooks d'invite lorsque les données d'entrée du hook seules suffisent pour prendre une décision. Utilisez les hooks d'agent lorsque vous avez besoin de vérifier quelque chose par rapport à l'état réel de la base de code.

889 889 

890Pour les options de configuration complètes, consultez [Hooks basés sur des agents](/fr/hooks#agent-based-hooks) dans la référence.890Pour les options de configuration complètes, consultez [Hooks basés sur des agents](/docs/fr/hooks#agent-based-hooks) dans la référence.

891 891 

892<h2 id="http-hooks">892<h2 id="http-hooks">

893 Hooks HTTP893 Hooks HTTP


920}920}

921```921```

922 922 

923Le point de terminaison doit retourner un corps de réponse JSON en utilisant le même [format de sortie](/fr/hooks#json-output) que les hooks de commande. Pour bloquer un appel d'outil, retournez une réponse 2xx avec les champs `hookSpecificOutput` appropriés. Les codes de statut HTTP seuls ne peuvent pas bloquer les actions.923Le point de terminaison doit retourner un corps de réponse JSON en utilisant le même [format de sortie](/docs/fr/hooks#json-output) que les hooks de commande. Pour bloquer un appel d'outil, retournez une réponse 2xx avec les champs `hookSpecificOutput` appropriés. Les codes de statut HTTP seuls ne peuvent pas bloquer les actions.

924 924 

925Les valeurs d'en-tête supportent l'interpolation de variables d'environnement en utilisant la syntaxe `$VAR_NAME` ou `${VAR_NAME}`. Seules les variables listées dans le tableau `allowedEnvVars` sont résolues ; toutes les autres références `$VAR` restent vides.925Les valeurs d'en-tête supportent l'interpolation de variables d'environnement en utilisant la syntaxe `$VAR_NAME` ou `${VAR_NAME}`. Seules les variables listées dans le tableau `allowedEnvVars` sont résolues ; toutes les autres références `$VAR` restent vides.

926 926 

927Pour les options de configuration complètes et la gestion des réponses, consultez [Hooks HTTP](/fr/hooks#http-hook-fields) dans la référence.927Pour les options de configuration complètes et la gestion des réponses, consultez [Hooks HTTP](/docs/fr/hooks#http-hook-fields) dans la référence.

928 928 

929<h2 id="limitations-and-troubleshooting">929<h2 id="limitations-and-troubleshooting">

930 Limitations et dépannage930 Limitations et dépannage


942 * `prompt` : 30 secondes.942 * `prompt` : 30 secondes.

943 * `agent` : 60 secondes.943 * `agent` : 60 secondes.

944* Les hooks `PostToolUse` ne peuvent pas annuler les actions puisque l'outil a déjà été exécuté.944* Les hooks `PostToolUse` ne peuvent pas annuler les actions puisque l'outil a déjà été exécuté.

945* Les hooks `PermissionRequest` ne se déclenchent pas en [mode non-interactif](/fr/headless) avec l'indicateur `-p`. Utilisez les hooks `PreToolUse` pour les décisions de permission automatisées.945* Les hooks `PermissionRequest` ne se déclenchent pas en [mode non-interactif](/docs/fr/headless) avec l'indicateur `-p`. Utilisez les hooks `PreToolUse` pour les décisions de permission automatisées.

946* Les hooks `Stop` se déclenchent chaque fois que Claude termine sa réponse, pas seulement à la fin de la tâche. Ils ne se déclenchent pas sur les interruptions de l'utilisateur. Les erreurs API déclenchent [StopFailure](/fr/hooks#stopfailure) à la place.946* Les hooks `Stop` se déclenchent chaque fois que Claude termine sa réponse, pas seulement à la fin de la tâche. Ils ne se déclenchent pas sur les interruptions de l'utilisateur. Les erreurs API déclenchent [StopFailure](/docs/fr/hooks#stopfailure) à la place.

947* Lorsque plusieurs hooks `PreToolUse` retournent [`updatedInput`](/fr/hooks#pretooluse) pour réécrire les arguments d'un outil, le dernier à terminer gagne. Puisque les hooks s'exécutent en parallèle, l'ordre est non-déterministe. Évitez d'avoir plus d'un hook modifier l'entrée du même outil.947* Lorsque plusieurs hooks `PreToolUse` retournent [`updatedInput`](/docs/fr/hooks#pretooluse) pour réécrire les arguments d'un outil, le dernier à terminer gagne. Puisque les hooks s'exécutent en parallèle, l'ordre est non-déterministe. Évitez d'avoir plus d'un hook modifier l'entrée du même outil.

948 948 

949<h3 id="hooks-and-permission-modes">949<h3 id="hooks-and-permission-modes">

950 Hooks et modes de permission950 Hooks et modes de permission


952 952 

953Les hooks `PreToolUse` se déclenchent avant toute vérification du mode de permission. Un hook qui retourne `permissionDecision: "deny"` bloque l'outil même en mode `bypassPermissions` ou avec `--dangerously-skip-permissions`. Cela vous permet d'appliquer une politique que les utilisateurs ne peuvent pas contourner en changeant leur mode de permission.953Les hooks `PreToolUse` se déclenchent avant toute vérification du mode de permission. Un hook qui retourne `permissionDecision: "deny"` bloque l'outil même en mode `bypassPermissions` ou avec `--dangerously-skip-permissions`. Cela vous permet d'appliquer une politique que les utilisateurs ne peuvent pas contourner en changeant leur mode de permission.

954 954 

955L'inverse n'est pas vrai : un hook retournant `"allow"` ne contourne pas les règles de refus des paramètres, et il ne peut pas supprimer l'invite pour les outils de connecteur [que votre organisation a défini sur `ask`](/fr/mcp#organization-controls-on-connector-tools) ou les outils MCP marqués [`requiresUserInteraction`](/fr/mcp#require-approval-for-a-specific-tool). Les hooks peuvent renforcer les restrictions mais pas les assouplir au-delà de ce que les règles de permission permettent.955L'inverse n'est pas vrai : un hook retournant `"allow"` ne contourne pas les règles de refus des paramètres, et il ne peut pas supprimer l'invite pour les outils de connecteur [que votre organisation a défini sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) ou les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool). Les hooks peuvent renforcer les restrictions mais pas les assouplir au-delà de ce que les règles de permission permettent.

956 956 

957<h3 id="hook-not-firing">957<h3 id="hook-not-firing">

958 Hook ne se déclenche pas958 Hook ne se déclenche pas


976 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh976 echo '{"tool_name":"Bash","tool_input":{"command":"ls"}}' | ./my-hook.sh

977 echo $? # Check the exit code977 echo $? # Check the exit code

978 ```978 ```

979* Si vous voyez « command not found », utilisez des chemins absolus ou `${CLAUDE_PROJECT_DIR}` pour référencer les scripts. Pour éviter complètement les guillemets du shell, ajoutez `"args": []` pour basculer vers la [forme exec](/fr/hooks#exec-form-and-shell-form), qui génère le script directement sans shell979* Si vous voyez « command not found », utilisez des chemins absolus ou `${CLAUDE_PROJECT_DIR}` pour référencer les scripts. Pour éviter complètement les guillemets du shell, ajoutez `"args": []` pour basculer vers la [forme exec](/docs/fr/hooks#exec-form-and-shell-form), qui génère le script directement sans shell

980* Si vous voyez « jq: command not found », installez `jq` ou utilisez Python/Node.js pour l'analyse JSON980* Si vous voyez « jq: command not found », installez `jq` ou utilisez Python/Node.js pour l'analyse JSON

981* Si le script ne s'exécute pas du tout, rendez-le exécutable : `chmod +x ./my-hook.sh`981* Si le script ne s'exécute pas du tout, rendez-le exécutable : `chmod +x ./my-hook.sh`

982 982 


1007# ... rest of your hook logic1007# ... rest of your hook logic

1008```1008```

1009 1009 

1010Si votre hook a légitimement besoin de plus de huit itérations pour converger, augmentez le plafond avec [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/fr/env-vars).1010Si votre hook a légitimement besoin de plus de huit itérations pour converger, augmentez le plafond avec [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/fr/env-vars).

1011 1011 

1012<h3 id="json-validation-failed">1012<h3 id="json-validation-failed">

1013 Validation JSON échouée1013 Validation JSON échouée


1045 En savoir plus1045 En savoir plus

1046</h2>1046</h2>

1047 1047 

1048* [Référence des Hooks](/fr/hooks) : schémas d'événements complets, format de sortie JSON, hooks asynchrones et hooks d'outils MCP1048* [Référence des Hooks](/docs/fr/hooks) : schémas d'événements complets, format de sortie JSON, hooks asynchrones et hooks d'outils MCP

1049* [Considérations de sécurité](/fr/hooks#security-considerations) : examinez avant de déployer les hooks dans des environnements partagés ou de production1049* [Considérations de sécurité](/docs/fr/hooks#security-considerations) : examinez avant de déployer les hooks dans des environnements partagés ou de production

1050* [Exemple de validateur de commande Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py) : implémentation de référence complète1050* [Exemple de validateur de commande Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py) : implémentation de référence complète

Details

27 27 

28Dans tous les modes sauf `bypassPermissions`, les écritures vers les [chemins protégés](#protected-paths) ne sont jamais auto-approuvées, protégeant l'état du référentiel et la configuration de Claude contre la corruption accidentelle.28Dans tous les modes sauf `bypassPermissions`, les écritures vers les [chemins protégés](#protected-paths) ne sont jamais auto-approuvées, protégeant l'état du référentiel et la configuration de Claude contre la corruption accidentelle.

29 29 

30Les modes définissent la ligne de base. Superposez les [règles de permission](/fr/permissions#manage-permissions) pour pré-approuver ou bloquer des outils spécifiques. Les règles de refus et les règles de demande explicite s'appliquent dans tous les modes, y compris `bypassPermissions`. Les règles d'autorisation n'ont aucun effet dans ce mode car tout le reste est déjà approuvé.30Les modes définissent la ligne de base. Superposez les [règles de permission](/fr/permissions#manage-permissions) sur le dessus pour pré-approuver ou bloquer des outils spécifiques. Les règles de refus, les règles de demande explicite, le [paramètre `ask` de l'organisation sur les outils de connecteur](/fr/mcp#organization-controls-on-connector-tools), et le marqueur [`requiresUserInteraction`](/fr/mcp#require-approval-for-a-specific-tool) s'appliquent dans tous les modes, y compris `bypassPermissions`. Les règles d'autorisation n'ont aucun effet dans ce mode car tout le reste est déjà approuvé.

31 31 

32<h2 id="switch-permission-modes">32<h2 id="switch-permission-modes">

33 Changer les modes de permission33 Changer les modes de permission


137 137 

138Le mode `acceptEdits` permet à Claude de créer et modifier des fichiers dans votre répertoire de travail sans demander de confirmation. La barre d'état affiche `⏵⏵ accept edits on` lorsque ce mode est actif.138Le mode `acceptEdits` permet à Claude de créer et modifier des fichiers dans votre répertoire de travail sans demander de confirmation. La barre d'état affiche `⏵⏵ accept edits on` lorsque ce mode est actif.

139 139 

140En plus des modifications de fichiers, le mode `acceptEdits` auto-approuve les commandes Bash courantes du système de fichiers : `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, et `sed`. Ces commandes sont également auto-approuvées lorsqu'elles sont préfixées par des variables d'environnement sûres telles que `LANG=C` ou `NO_COLOR=1`, ou des wrappers de processus tels que `timeout`, `nice`, ou `nohup`. Comme pour les modifications de fichiers, l'auto-approbation s'applique uniquement aux chemins à l'intérieur de votre répertoire de travail ou `additionalDirectories`. Les chemins en dehors de cette portée, les écritures vers les [chemins protégés](#protected-paths), et toutes les autres commandes Bash demandent toujours une confirmation.140En plus des modifications de fichiers, le mode `acceptEdits` auto-approuve les commandes Bash courantes du système de fichiers : `mkdir`, `touch`, `rm`, `rmdir`, `mv`, `cp`, et `sed`. Ces commandes sont également auto-approuvées lorsqu'elles sont préfixées par des variables d'environnement sûres telles que `LANG=C` ou `NO_COLOR=1`, ou des wrappers de processus tels que `timeout`, `nice`, ou `nohup`. Comme pour les modifications de fichiers, l'auto-approbation s'applique uniquement aux chemins à l'intérieur de votre répertoire de travail ou `additionalDirectories`. Les chemins en dehors de cette portée, les écritures vers les [chemins protégés](#protected-paths), et toutes les autres commandes Bash sauf l'[ensemble intégré en lecture seule](/fr/permissions#read-only-commands) demandent toujours une confirmation.

141 141 

142Lorsque l'[outil PowerShell](/fr/tools-reference#powershell-tool) est activé, le mode `acceptEdits` auto-approuve également `Set-Content`, `Add-Content`, `Clear-Content`, et `Remove-Item` sur les chemins dans la portée, ainsi que leurs alias courants. Les mêmes règles de portée et de chemin protégé s'appliquent.142Lorsque l'[outil PowerShell](/fr/tools-reference#powershell-tool) est activé, le mode `acceptEdits` auto-approuve également `Set-Content`, `Add-Content`, `Clear-Content`, et `Remove-Item` sur les chemins dans la portée, ainsi que leurs alias courants. Les mêmes règles de portée et de chemin protégé s'appliquent.

143 143 


201 201 

202Le mode auto permet à Claude d'exécuter sans invites de permission routinières. Un modèle classificateur distinct examine les actions avant leur exécution, bloquant tout ce qui dépasse votre demande, cible une infrastructure non reconnue, ou semble provoqué par du contenu hostile que Claude a lu. Les [règles ask](/fr/permissions#manage-permissions) explicites forcent toujours une invite.202Le mode auto permet à Claude d'exécuter sans invites de permission routinières. Un modèle classificateur distinct examine les actions avant leur exécution, bloquant tout ce qui dépasse votre demande, cible une infrastructure non reconnue, ou semble provoqué par du contenu hostile que Claude a lu. Les [règles ask](/fr/permissions#manage-permissions) explicites forcent toujours une invite.

203 203 

204Les suppressions ciblant la racine du système de fichiers ou le répertoire personnel, telles que `rm -rf /` et `rm -rf ~`, demandent une approbation au lieu d'aller au classificateur. {/* min-version: 2.1.208 */}Cette invite se déclenche également quand la commande contient une substitution de commande avec `$(...)` ou des backticks, ou une substitution de processus avec `<(...)`, que la suppression se trouve à l'intérieur de la substitution, comme dans `echo "$(rm -rf ~)"`, ou ailleurs dans la même commande. Avant v2.1.208, les commandes contenant ces formes allaient au classificateur au lieu de demander.

205 

204Le mode auto encourage également Claude à continuer à travailler sans s'arrêter pour des questions de clarification, bien que Claude demande toujours quand votre invite ou une skill le nécessite explicitement. Pour un comportement plus autonome tout en conservant les invites de permission, définissez plutôt le [style de sortie Proactive](/fr/output-styles).206Le mode auto encourage également Claude à continuer à travailler sans s'arrêter pour des questions de clarification, bien que Claude demande toujours quand votre invite ou une skill le nécessite explicitement. Pour un comportement plus autonome tout en conservant les invites de permission, définissez plutôt le [style de sortie Proactive](/fr/output-styles).

205 207 

206<Warning>208<Warning>


301* Lecture de `.env` et envoi de credentials à leur API correspondante303* Lecture de `.env` et envoi de credentials à leur API correspondante

302* Requêtes HTTP en lecture seule304* Requêtes HTTP en lecture seule

303* Poussée vers la branche sur laquelle vous avez commencé ou une que Claude a créée305* Poussée vers la branche sur laquelle vous avez commencé ou une que Claude a créée

306* {/* min-version: 2.1.203 */}Poussées routinières vers la branche par défaut du référentiel. Avant v2.1.203, toute poussée directe vers la branche par défaut était bloquée

304 307 

305Claude Code v2.1.195 et ultérieur autorisent également ceux-ci par défaut :308Claude Code v2.1.195 et ultérieur autorisent également ceux-ci par défaut :

306 309 


319 322 

320Exécutez `claude auto-mode defaults` pour voir les listes de règles complètes. Si les actions routinières sont bloquées, un administrateur peut ajouter des référentiels approuvés, des buckets, et des services via le paramètre `autoMode.environment` : voir [Configurer le mode auto](/fr/auto-mode-config).323Exécutez `claude auto-mode defaults` pour voir les listes de règles complètes. Si les actions routinières sont bloquées, un administrateur peut ajouter des référentiels approuvés, des buckets, et des services via le paramètre `autoMode.environment` : voir [Configurer le mode auto](/fr/auto-mode-config).

321 324 

325Poussée vers votre branche de travail, poussée routinière vers la branche par défaut du référentiel, et création d'une demande de tirage qui correspond à votre demande s'exécutent tous sans invite. Le classificateur bloque une poussée uniquement quand elle porte un risque, comme une force push ou du contenu qui contourne un examen que vous avez mis en place. Pour exiger un point de contrôle humain avant ces actions tout en restant en mode auto, ajoutez des règles `permissions.ask` : voir [Limites communes](/fr/auto-mode-config#common-boundaries).

326 

322<h3 id="boundaries-you-state-in-conversation">327<h3 id="boundaries-you-state-in-conversation">

323 Limites que vous énoncez dans la conversation328 Limites que vous énoncez dans la conversation

324</h3>329</h3>


343 <Accordion title="Comment le classificateur évalue les actions">348 <Accordion title="Comment le classificateur évalue les actions">

344 Chaque action passe par un ordre de décision fixe. La première étape correspondante gagne :349 Chaque action passe par un ordre de décision fixe. La première étape correspondante gagne :

345 350 

346 1. Les actions correspondant à vos [règles allow ou deny](/fr/permissions#manage-permissions) se résolvent immédiatement, sauf les écritures vers les [chemins protégés](#protected-paths), qui sont acheminées vers le classificateur même quand une règle allow correspond351 1. Les actions correspondant à vos [règles allow, ask, ou deny](/fr/permissions#manage-permissions) se résolvent immédiatement. Les écritures vers les [chemins protégés](#protected-paths) sont acheminées vers le classificateur même quand une règle allow correspond. Les outils connecteur [que votre organisation a définis sur `ask`](/fr/mcp#organization-controls-on-connector-tools) et les outils MCP marqués [`requiresUserInteraction`](/fr/mcp#require-approval-for-a-specific-tool) vous invitent directement même quand une règle allow correspond. Les règles ask limitées au contenu se replient sur une invite de permission

347 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 les [chemins protégés](#protected-paths)352 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 les [chemins protégés](#protected-paths)

348 3. Tout le reste va au classificateur. {/* min-version: 2.1.199 */}À partir de v2.1.199, un outil MCP marqué avec [`_meta["anthropic/requiresUserInteraction"]`](/fr/mcp#require-approval-for-a-specific-tool) saute le classificateur et vous invite directement, donc une étape de consentement n'est jamais auto-approuvée au nom de l'auteur de l'outil353 3. Tout le reste va au classificateur. Un outil connecteur [que votre organisation a défini sur `ask`](/fr/mcp#organization-controls-on-connector-tools) saute le classificateur et vous invite directement, donc une approbation requise par l'organisation n'est jamais auto-approuvée. {/* min-version: 2.1.199 */}À partir de v2.1.199, un outil MCP marqué avec [`_meta["anthropic/requiresUserInteraction"]`](/fr/mcp#require-approval-for-a-specific-tool) saute également le classificateur et vous invite directement, donc une étape de consentement n'est jamais auto-approuvée au nom de l'auteur de l'outil

349 4. Si le classificateur bloque, Claude reçoit la raison et essaie une alternative354 4. Si le classificateur bloque, Claude reçoit la raison et essaie une alternative

350 355 

351 En entrant en mode auto, les règles allow larges qui accordent l'exécution de code arbitraire sont supprimées :356 En entrant en mode auto, les règles allow larges qui accordent l'exécution de code arbitraire sont supprimées :


379 Autoriser uniquement les outils pré-approuvés avec le mode dontAsk384 Autoriser uniquement les outils pré-approuvés avec le mode dontAsk

380</h2>385</h2>

381 386 

382Le mode `dontAsk` refuse automatiquement chaque appel d'outil qui déclencherait autrement une invite. La barre d'état affiche `⏵⏵ don't ask on` tandis que ce mode est actif. Seules les actions correspondant à vos règles `permissions.allow` et aux [commandes Bash en lecture seule](/fr/permissions#read-only-commands) peuvent s'exécuter ; les [règles `ask` explicites](/fr/permissions#manage-permissions) sont refusées plutôt que de déclencher une invite. {/* min-version: 2.1.199 */}À partir de la v2.1.199, un outil MCP marqué avec [`_meta["anthropic/requiresUserInteraction"]`](/fr/mcp#require-approval-for-a-specific-tool) est également refusé dans ce mode même lorsqu'une règle allow le correspond, car sa carte d'approbation nécessite une réponse que ce mode ne collecte jamais. Cela rend le mode entièrement non-interactif pour les pipelines CI ou les environnements restreints où vous prédéfinissez exactement ce que Claude peut faire. Les sessions cloud sur [Claude Code sur le web](/fr/claude-code-on-the-web) ignorent `defaultMode: "dontAsk"` ; consultez [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) pour plus de détails.387Si vous définissez le mode `dontAsk`, Claude Code refuse automatiquement chaque appel d'outil qui déclencherait autrement une invite. Claude exécute uniquement les actions correspondant à vos règles `permissions.allow`, les [commandes Bash en lecture seule](/fr/permissions#read-only-commands) et les appels approuvés par un [hook PreToolUse](/fr/permissions#extend-permissions-with-hooks). Utilisez ce mode pour les pipelines CI ou les environnements restreints où vous prédéfinissez exactement ce que Claude peut faire ; la session n'attend jamais d'entrée. La barre d'état affiche `⏵⏵ don't ask on` tandis que ce mode est actif.

388 

389Claude Code refuse les appels correspondant à vos [règles `ask` explicites](/fr/permissions#manage-permissions) plutôt que de déclencher une invite. Il refuse également l'outil intégré `AskUserQuestion` et les outils connecteur [que votre organisation a définis sur `ask`](/fr/mcp#organization-controls-on-connector-tools), même si vos règles allow les correspondent. {/* min-version: 2.1.199 */}Il refuse les outils MCP marqués [`_meta["anthropic/requiresUserInteraction"]`](/fr/mcp#require-approval-for-a-specific-tool) de la même manière, car leur carte d'approbation nécessite une réponse que ce mode ne collecte jamais ; cela nécessite Claude Code v2.1.199 ou ultérieur.

390 

391Les sessions cloud sur [Claude Code sur le web](/fr/claude-code-on-the-web) ignorent `defaultMode: "dontAsk"` ; consultez [bypassPermissions](#skip-all-checks-with-bypasspermissions-mode) pour plus de détails.

383 392 

384Définissez-le au démarrage avec le drapeau :393Définissez-le au démarrage avec le drapeau :

385 394 


391 Ignorer tous les contrôles avec le mode bypassPermissions400 Ignorer tous les contrôles avec le mode bypassPermissions

392</h2>401</h2>

393 402 

394Le mode `bypassPermissions` désactive les invites de permission et les contrôles de sécurité afin que les appels d'outils s'exécutent immédiatement. À partir de la v2.1.126, cela inclut les écritures vers les [chemins protégés](#protected-paths), que les versions antérieures invitaient toujours. Les [règles ask](/fr/permissions#manage-permissions) explicites forcent toujours une invite dans ce mode, et les suppressions ciblant la racine du système de fichiers ou le répertoire personnel, telles que `rm -rf /` et `rm -rf ~`, invitent toujours comme disjoncteur contre les erreurs du modèle. {/* min-version: 2.1.199 */}À partir de la v2.1.199, les outils MCP marqués avec [`_meta["anthropic/requiresUserInteraction"]`](/fr/mcp#require-approval-for-a-specific-tool) invitent également toujours. Utilisez ce mode uniquement dans des environnements isolés comme les conteneurs, les machines virtuelles ou les dev containers sans accès à Internet, où Claude Code ne peut pas endommager votre système hôte.403Le mode `bypassPermissions` désactive les invites de permission et les contrôles de sécurité afin que les appels d'outils s'exécutent immédiatement, y compris les écritures vers les [chemins protégés](#protected-paths). Avant la v2.1.126, les écritures vers les chemins protégés invitaient toujours dans ce mode.

404 

405Les [règles ask](/fr/permissions#manage-permissions) explicites et les outils connecteur [que votre organisation a définis sur `ask`](/fr/mcp#organization-controls-on-connector-tools) forcent toujours une invite dans ce mode. {/* min-version: 2.1.199 */}Les outils MCP marqués avec [`_meta["anthropic/requiresUserInteraction"]`](/fr/mcp#require-approval-for-a-specific-tool) invitent également toujours ; cela nécessite Claude Code v2.1.199 ou une version ultérieure.

406 

407Les suppressions ciblant la racine du système de fichiers ou le répertoire personnel, telles que `rm -rf /` et `rm -rf ~`, invitent toujours comme disjoncteur contre les erreurs du modèle. {/* min-version: 2.1.208 */}Le disjoncteur s'active également lorsque la commande contient une substitution de commande avec `$(...)` ou des backticks, ou une substitution de processus avec `<(...)`, que la suppression se trouve à l'intérieur de la substitution, comme dans `echo "$(rm -rf ~)"`, ou ailleurs dans la même commande. La forme simple, tapée comme sa propre commande, a invité dans ce mode depuis l'introduction du disjoncteur ; avant la v2.1.208, les commandes contenant ces formes n'invitaient pas.

408 

409<Warning>

410 Utilisez ce mode uniquement dans des environnements isolés comme les conteneurs, les machines virtuelles ou les dev containers sans accès à Internet, où Claude Code ne peut pas endommager votre système hôte.

411</Warning>

395 412 

396Vous ne pouvez pas entrer dans `bypassPermissions` à partir d'une session qui a été démarrée sans l'un des drapeaux d'activation ; redémarrez avec l'un d'eux pour l'activer :413Vous ne pouvez pas entrer dans `bypassPermissions` à partir d'une session qui a été démarrée sans l'un des drapeaux d'activation ; redémarrez avec l'un d'eux pour l'activer :

397 414 

Details

7> Référence technique complète du système de plugins Claude Code, incluant les schémas, les commandes CLI et les spécifications des composants.7> Référence technique complète du système de plugins Claude Code, incluant les schémas, les commandes CLI et les spécifications des composants.

8 8 

9<Tip>9<Tip>

10 Vous cherchez à installer des plugins ? Consultez [Découvrir et installer des plugins](/fr/discover-plugins). Pour créer des plugins, consultez [Plugins](/fr/plugins). Pour distribuer des plugins, consultez [Marketplaces de plugins](/fr/plugin-marketplaces).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 [Marketplaces de plugins](/docs/fr/plugin-marketplaces).

11</Tip>11</Tip>

12 12 

13Cette référence fournit les spécifications techniques complètes du système de plugins Claude Code, incluant les schémas de composants, les commandes CLI et les outils de développement.13Cette référence fournit les spécifications techniques complètes du système de plugins Claude Code, incluant les schémas de composants, les commandes CLI et les outils de développement.


48 48 

49Si 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 une seule skill. Définissez le champ frontmatter `name` pour contrôler le nom d'invocation de la skill. Sans cela, Claude Code revient au nom du répertoire d'installation, qui pour les plugins installés depuis la marketplace est une chaîne de version qui change à chaque mise à jour. Pour les plugins qui livrent plus d'une skill, utilisez la disposition du répertoire `skills/` montrée ci-dessus.49Si 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 une seule skill. Définissez le champ frontmatter `name` pour contrôler le nom d'invocation de la skill. Sans cela, Claude Code revient au nom du répertoire d'installation, qui pour les plugins installés depuis la marketplace est une chaîne de version qui change à chaque mise à jour. Pour les plugins qui livrent plus d'une skill, utilisez la disposition du répertoire `skills/` montrée ci-dessus.

50 50 

51Pour plus de détails, consultez [Skills](/fr/skills).51Pour plus de détails, consultez [Skills](/docs/fr/skills).

52 52 

53<h3 id="agents">53<h3 id="agents">

54 Agents54 Agents


79 79 

80**Points d'intégration** :80**Points d'intégration** :

81 81 

82* Les agents apparaissent dans la [saisie semi-automatique @-mention](/fr/sub-agents#invoke-subagents-explicitly) sous leur nom délimité, tel que `my-plugin:code-reviewer`, une fois que le plugin est activé82* Les agents apparaissent dans la [saisie semi-automatique @-mention](/docs/fr/sub-agents#invoke-subagents-explicitly) sous leur nom délimité, tel que `my-plugin:code-reviewer`, une fois que le plugin est activé

83* Claude peut invoquer les agents automatiquement en fonction du contexte de la tâche83* Claude peut invoquer les agents automatiquement en fonction du contexte de la tâche

84* Les agents peuvent être invoqués manuellement par les utilisateurs84* Les agents peuvent être invoqués manuellement par les utilisateurs

85* Les agents de plugin fonctionnent aux côtés des agents Claude intégrés85* Les agents de plugin fonctionnent aux côtés des agents Claude intégrés

86 86 

87Pour plus de détails, consultez [Subagents](/fr/sub-agents).87Pour plus de détails, consultez [Subagents](/docs/fr/sub-agents).

88 88 

89<h3 id="hooks">89<h3 id="hooks">

90 Hooks90 Hooks


116}116}

117```117```

118 118 

119Les hooks de plugin répondent aux mêmes événements de cycle de vie que les [hooks définis par l'utilisateur](/fr/hooks) :119Les 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) :

120 120 

121| Event | When it fires |121| Event | When it fires |

122| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |122| :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |


138| `TaskCompleted` | When a task is being marked as completed |138| `TaskCompleted` | When a task is being marked as completed |

139| `Stop` | When Claude finishes responding |139| `Stop` | When Claude finishes responding |

140| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |140| `StopFailure` | When the turn ends due to an API error. Output and exit code are ignored |

141| `TeammateIdle` | When an [agent team](/en/agent-teams) teammate is about to go idle |141| `TeammateIdle` | When an [agent team](/docs/en/agent-teams) teammate is about to go idle |

142| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |142| `InstructionsLoaded` | When a CLAUDE.md or `.claude/rules/*.md` file is loaded into context. Fires at session start and when files are lazily loaded during a session |

143| `ConfigChange` | When a configuration file changes during a session |143| `ConfigChange` | When a configuration file changes during a session |

144| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |144| `CwdChanged` | When the working directory changes, for example when Claude executes a `cd` command. Useful for reactive environment management with tools like direnv |

145| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |145| `FileChanged` | When a watched file changes on disk. The `matcher` field specifies which filenames to watch |

146| `WorktreeCreate` | When a worktree is being created via `--worktree` or `isolation: "worktree"`. Replaces default git behavior |146| `WorktreeCreate` | When a worktree is being created via `--worktree`, `isolation: "worktree"`, or for a background session. Replaces default git behavior |

147| `WorktreeRemove` | When a worktree is being removed, either at session exit or when a subagent finishes |147| `WorktreeRemove` | When a worktree is being removed at session exit, when a subagent finishes, or when you delete a background session |

148| `PreCompact` | Before context compaction |148| `PreCompact` | Before context compaction |

149| `PostCompact` | After context compaction completes |149| `PostCompact` | After context compaction completes |

150| `Elicitation` | When an MCP server requests user input during a tool call |150| `Elicitation` | When an MCP server requests user input during a tool call |


155 155 

156* `command` : exécuter des commandes shell ou des scripts156* `command` : exécuter des commandes shell ou des scripts

157* `http` : envoyer l'événement JSON en tant que requête POST à une URL157* `http` : envoyer l'événement JSON en tant que requête POST à une URL

158* `mcp_tool` : appeler un outil sur un [serveur MCP](/fr/mcp) configuré158* `mcp_tool` : appeler un outil sur un [serveur MCP](/docs/fr/mcp) configuré

159* `prompt` : évaluer une invite avec un LLM (utilise l'espace réservé `$ARGUMENTS` pour le contexte)159* `prompt` : évaluer une invite avec un LLM (utilise l'espace réservé `$ARGUMENTS` pour le contexte)

160* `agent` : exécuter un vérificateur agentic avec des outils pour les tâches de vérification complexes160* `agent` : exécuter un vérificateur agentic avec des outils pour les tâches de vérification complexes

161 161 

162Les hooks qui ciblent le [serveur MCP groupé](#mcp-servers) du plugin lui-même doivent utiliser ses noms délimités. Les correspondances d'outils et les champs `if` prennent le nom d'outil délimité `mcp__plugin_<plugin-name>_<server-name>__<tool>`, et le champ `server` d'un hook `mcp_tool` prend `plugin:<plugin-name>:<server-name>`. Une correspondance écrite contre la clé du serveur nu ne se déclenche jamais. Consultez [Correspondre les outils MCP](/fr/hooks#match-mcp-tools) et [Serveurs MCP fournis par les plugins](/fr/mcp#plugin-provided-mcp-servers).162Les hooks qui ciblent le [serveur MCP groupé](#mcp-servers) du plugin lui-même doivent utiliser ses noms délimités. Les correspondances d'outils et les champs `if` prennent le nom d'outil délimité `mcp__plugin_<plugin-name>_<server-name>__<tool>`, et le champ `server` d'un hook `mcp_tool` prend `plugin:<plugin-name>:<server-name>`. Une correspondance écrite contre la clé du serveur nu ne se déclenche jamais. Consultez [Correspondre les outils MCP](/docs/fr/hooks#match-mcp-tools) et [Serveurs MCP fournis par les plugins](/docs/fr/mcp#plugin-provided-mcp-servers).

163 163 

164<h3 id="mcp-servers">164<h3 id="mcp-servers">

165 Serveurs MCP165 Serveurs MCP


300 300 

301Les plugins peuvent déclarer des moniteurs en arrière-plan que Claude Code démarre automatiquement quand le plugin est actif. Chaque moniteur exécute une commande shell pour la durée de la session et livre chaque ligne stdout à Claude en tant que notification, afin que Claude puisse réagir aux entrées de journal, aux changements de statut ou aux événements interrogés sans qu'on lui demande de démarrer la surveillance lui-même.301Les plugins peuvent déclarer des moniteurs en arrière-plan que Claude Code démarre automatiquement quand le plugin est actif. Chaque moniteur exécute une commande shell pour la durée de la session et livre chaque ligne stdout à Claude en tant que notification, afin que Claude puisse réagir aux entrées de journal, aux changements de statut ou aux événements interrogés sans qu'on lui demande de démarrer la surveillance lui-même.

302 302 

303Les moniteurs de plugin utilisent le même mécanisme que l'[outil Monitor](/fr/tools-reference#monitor-tool) et partagent ses contraintes de disponibilité. Ils s'exécutent uniquement dans les sessions CLI interactives, s'exécutent sans sandbox au même niveau de confiance que les [hooks](#hooks), et sont ignorés sur les hôtes où l'outil Monitor n'est pas disponible.303Les 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 sans sandbox au même niveau de confiance que les [hooks](#hooks), et sont ignorés sur les hôtes où l'outil Monitor n'est pas disponible.

304 304 

305**Emplacement** : `monitors/monitors.json` à la racine du plugin, ou en ligne dans `plugin.json`305**Emplacement** : `monitors/monitors.json` à la racine du plugin, ou en ligne dans `plugin.json`

306 306 


342 342 

343La valeur `command` prend en charge les [substitutions de chemin](#environment-variables) `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}` et `${CLAUDE_PROJECT_DIR}`, plus tout `${ENV_VAR}` de l'environnement. Préfixez la commande avec `cd "${CLAUDE_PLUGIN_ROOT}" && ` si le script doit s'exécuter à partir du répertoire du plugin lui-même.343La valeur `command` prend en charge les [substitutions de chemin](#environment-variables) `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}` et `${CLAUDE_PROJECT_DIR}`, plus tout `${ENV_VAR}` de l'environnement. Préfixez la commande avec `cd "${CLAUDE_PLUGIN_ROOT}" && ` si le script doit s'exécuter à partir du répertoire du plugin lui-même.

344 344 

345Une commande `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](/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 à partir d'un fichier de configuration qu'il possède. Avant v2.1.207, les commandes de moniteur substituaient les valeurs `${user_config.*}`.345Une commande `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 à partir d'un fichier de configuration qu'il possède. Avant v2.1.207, les commandes de moniteur substituaient les valeurs `${user_config.*}`.

346 346 

347La désactivation d'un plugin en cours de session n'arrête pas les moniteurs qui sont déjà en cours d'exécution. Ils s'arrêtent quand la session se termine.347La désactivation d'un plugin en cours de session n'arrête pas les moniteurs qui sont déjà en cours d'exécution. Ils s'arrêtent quand la session se termine.

348 348 


379| `user` | `~/.claude/settings.json` | Plugins personnels disponibles dans tous les projets (par défaut) |379| `user` | `~/.claude/settings.json` | Plugins personnels disponibles dans tous les projets (par défaut) |

380| `project` | `.claude/settings.json` | Plugins d'équipe partagés via le contrôle de version |380| `project` | `.claude/settings.json` | Plugins d'équipe partagés via le contrôle de version |

381| `local` | `.claude/settings.local.json` | Plugins spécifiques au projet, ignorés par git |381| `local` | `.claude/settings.local.json` | Plugins spécifiques au projet, ignorés par git |

382| `managed` | [Paramètres gérés](/fr/settings#settings-files) | Plugins gérés (lecture seule, mise à jour uniquement) |382| `managed` | [Paramètres gérés](/docs/fr/settings#settings-files) | Plugins gérés (lecture seule, mise à jour uniquement) |

383 383 

384Les 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](/fr/discover-plugins#install-plugins). Pour une explication complète des portées, consultez [Portées de configuration](/fr/settings#configuration-scopes).384Les 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#configuration-scopes).

385 385 

386***386***

387 387 


395 395 

396| Ce que vous avez | Ce que c'est |396| Ce que vous avez | Ce que c'est |

397| :-------------------------------------------- | :--------------------------------------------------------------------------------------- |397| :-------------------------------------------- | :--------------------------------------------------------------------------------------- |

398| `<skills-dir>/foo/SKILL.md` sans manifeste | Une [skill](/fr/skills) simple nommée `foo` |398| `<skills-dir>/foo/SKILL.md` sans manifeste | Une [skill](/docs/fr/skills) simple nommée `foo` |

399| `<skills-dir>/foo/.claude-plugin/plugin.json` | Un plugin `foo@skills-dir`, qui peut regrouper ses propres skills, agents, hooks et plus |399| `<skills-dir>/foo/.claude-plugin/plugin.json` | Un plugin `foo@skills-dir`, qui peut regrouper ses propres skills, agents, hooks et plus |

400| `<plugin>/skills/bar/SKILL.md` | Une skill `bar` emballée à l'intérieur d'un plugin |400| `<plugin>/skills/bar/SKILL.md` | Une skill `bar` emballée à l'intérieur d'un plugin |

401 401 


406| Répertoire de skills | Portée | Se charge |406| Répertoire de skills | Portée | Se charge |

407| :---------------------- | :-------- | :-------------------------------------------------------------------------------------------------------------------------- |407| :---------------------- | :-------- | :-------------------------------------------------------------------------------------------------------------------------- |

408| `~/.claude/skills/` | personnel | Dans chaque projet, puisque l'emplacement est le vôtre seul |408| `~/.claude/skills/` | personnel | Dans chaque projet, puisque l'emplacement est le vôtre seul |

409| `<cwd>/.claude/skills/` | projet | Seulement après que vous acceptiez la boîte de dialogue de [confiance](/fr/settings) de l'espace de travail pour ce dossier |409| `<cwd>/.claude/skills/` | projet | Seulement après que vous acceptiez la boîte de dialogue de [confiance](/docs/fr/settings) de l'espace de travail pour ce dossier |

410 410 

411Un 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 seulement après la même porte de confiance qui régit `.claude/settings.json`, et les composants qui exécutent du code sont davantage restreints :411Un 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 seulement après la même porte de confiance qui régit `.claude/settings.json`, et les composants qui exécutent du code sont davantage restreints :

412 412 

413* Les serveurs MCP qu'il déclare passent par l'[approbation par serveur](/fr/mcp) identique qu'un `.mcp.json` de projet413* Les serveurs MCP qu'il déclare passent par l'[approbation par serveur](/docs/fr/mcp) identique qu'un `.mcp.json` de projet

414* Les serveurs LSP démarrent seulement après que vous fassiez confiance à l'espace de travail414* Les serveurs LSP démarrent seulement après que vous fassiez confiance à l'espace de travail

415* Les [moniteurs en arrière-plan](#monitors) ne se chargent pas415* Les [moniteurs en arrière-plan](#monitors) ne se chargent pas

416 416 

417Les plugins de portée personnelle n'ont aucune de ces restrictions.417Les plugins de portée personnelle n'ont aucune de ces restrictions.

418 418 

419<Warning>419<Warning>

420 Les plugins `@skills-dir` de portée projet se chargent uniquement à partir du `.claude/skills/` du répertoire où vous démarrez Claude Code. Ils ne [remontent pas jusqu'à la racine du référentiel](/fr/skills#automatic-discovery-from-parent-and-nested-directories) de la façon dont les skills et commandes simples le font, donc lancer à partir d'un sous-répertoire manque un plugin qui vit à la racine du référentiel. Lancez à partir de la racine du référentiel, ou exécutez `/reload-plugins` après avoir changé de répertoires.420 Les plugins `@skills-dir` de portée projet se chargent uniquement à partir du `.claude/skills/` du répertoire où vous démarrez Claude Code. Ils ne [remontent pas jusqu'à la racine du référentiel](/docs/fr/skills#automatic-discovery-from-parent-and-nested-directories) de la façon dont les skills et commandes simples le font, donc lancer à partir d'un sous-répertoire manque un plugin qui vit à la racine du référentiel. Lancez à partir de la racine du référentiel, ou exécutez `/reload-plugins` après avoir changé de répertoires.

421</Warning>421</Warning>

422 422 

423<h3 id="edit-reload-and-disable-a-skills-directory-plugin">423<h3 id="edit-reload-and-disable-a-skills-directory-plugin">

424 Modifier, recharger et désactiver un plugin du répertoire des skills424 Modifier, recharger et désactiver un plugin du répertoire des skills

425</h3>425</h3>

426 426 

427Les modifications que vous apportez au `SKILL.md` d'une skill prennent effet immédiatement dans la session actuelle. Les modifications 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. Consultez [Détection des changements en direct](/fr/skills#live-change-detection).427Les modifications que vous apportez au `SKILL.md` d'une skill prennent effet immédiatement dans la session actuelle. Les modifications 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. Consultez [Détection des changements en direct](/docs/fr/skills#live-change-detection).

428 428 

429Pour arrêter le chargement d'un plugin du répertoire des skills, 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.429Pour arrêter le chargement d'un plugin du répertoire des skills, 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.

430 430 


487 487 

488| Champ | Type | Description | Exemple |488| Champ | Type | Description | Exemple |

489| :----- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |489| :----- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

490| `name` | string | Identifiant unique (kebab-case, pas d'espaces). Quand une [entrée de marketplace](/fr/plugin-marketplaces#plugin-entries) liste le plugin sous un nom différent, le nom de l'entrée de marketplace est ce que les clés `enabledPlugins` et `/plugin` utilisent | `"deployment-tools"` |490| `name` | string | Identifiant unique (kebab-case, pas d'espaces). Quand une [entrée de marketplace](/docs/fr/plugin-marketplaces#plugin-entries) liste le plugin sous un nom différent, le nom de l'entrée de marketplace est ce que les clés `enabledPlugins` et `/plugin` utilisent | `"deployment-tools"` |

491 491 

492Ce nom est utilisé pour l'espace de noms des composants. Par exemple, dans l'interface utilisateur, l'agent `agent-creator` pour le plugin avec le nom `plugin-dev` apparaîtra comme `plugin-dev:agent-creator`.492Ce nom est utilisé pour l'espace de noms des composants. Par exemple, dans l'interface utilisateur, l'agent `agent-creator` pour le plugin avec le nom `plugin-dev` apparaîtra comme `plugin-dev:agent-creator`.

493 493 


533`defaultEnabled` est le secours quand rien d'autre n'a décidé l'état du plugin. Deux choses ont la priorité sur lui :533`defaultEnabled` est le secours quand rien d'autre n'a décidé l'état du plugin. Deux choses ont la priorité sur lui :

534 534 

535* **Le paramètre de l'utilisateur** : une entrée pour le plugin dans `enabledPlugins` à n'importe quelle portée de paramètres. Une fois écrite, elle persiste entre les mises à jour et réinstallations du plugin, donc changer `defaultEnabled` dans une version ultérieure ne bascule pas un utilisateur existant.535* **Le paramètre de l'utilisateur** : une entrée pour le plugin dans `enabledPlugins` à n'importe quelle portée de paramètres. Une fois écrite, elle persiste entre les mises à jour et réinstallations du plugin, donc changer `defaultEnabled` dans une version ultérieure ne bascule pas un utilisateur existant.

536* **Une exigence de dépendance** : quand 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. Consultez [Activer ou désactiver un plugin avec des dépendances](/fr/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies).536* **Une exigence de dépendance** : quand 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. Consultez [Activer ou désactiver un plugin avec des dépendances](/docs/fr/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies).

537 537 

538Le 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`. Consultez [Champs de plugin optionnels](/fr/plugin-marketplaces#optional-plugin-fields).538Le 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`. Consultez [Champs de plugin optionnels](/docs/fr/plugin-marketplaces#optional-plugin-fields).

539 539 

540<h3 id="component-path-fields">540<h3 id="component-path-fields">

541 Champs de chemin de composant541 Champs de chemin de composant


551| `outputStyles` | string\|array | Fichiers/répertoires de styles de sortie personnalisés (remplace le répertoire par défaut `output-styles/`) | `"./styles/"` |551| `outputStyles` | string\|array | Fichiers/répertoires de styles de sortie personnalisés (remplace le répertoire par défaut `output-styles/`) | `"./styles/"` |

552| `lspServers` | string\|array\|object | Configurations [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) pour l'intelligence de code (aller à la définition, trouver les références, etc.) | `"./.lsp.json"` |552| `lspServers` | string\|array\|object | Configurations [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) pour l'intelligence de code (aller à la définition, trouver les références, etc.) | `"./.lsp.json"` |

553| `experimental.themes` | string\|array | Fichiers/répertoires de thèmes de couleur (remplace le répertoire par défaut `themes/`). Consultez [Thèmes](#themes) | `"./themes/"` |553| `experimental.themes` | string\|array | Fichiers/répertoires de thèmes de couleur (remplace le répertoire par défaut `themes/`). Consultez [Thèmes](#themes) | `"./themes/"` |

554| `experimental.monitors` | string\|array | Configurations de [Monitor](/fr/tools-reference#monitor-tool) en arrière-plan qui démarrent automatiquement quand le plugin est actif. Consultez [Moniteurs](#monitors) | `"./monitors.json"` |554| `experimental.monitors` | string\|array | Configurations de [Monitor](/docs/fr/tools-reference#monitor-tool) en arrière-plan qui démarrent automatiquement quand le plugin est actif. Consultez [Moniteurs](#monitors) | `"./monitors.json"` |

555| `userConfig` | object | Valeurs configurables par l'utilisateur demandées au moment de l'activation. Consultez [Configuration utilisateur](#user-configuration) | Voir ci-dessous |555| `userConfig` | object | Valeurs configurables par l'utilisateur demandées au moment de l'activation. Consultez [Configuration utilisateur](#user-configuration) | Voir ci-dessous |

556| `channels` | array | Déclarations de canaux pour l'injection de messages (style Telegram, Slack, Discord). Consultez [Canaux](#channels) | Voir ci-dessous |556| `channels` | array | Déclarations de canaux pour l'injection de messages (style Telegram, Slack, Discord). Consultez [Canaux](#channels) | Voir ci-dessous |

557| `dependencies` | array | Autres plugins que ce plugin nécessite, optionnellement avec des contraintes de version semver. Consultez [Contraindre les versions de dépendance des plugins](/fr/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |557| `dependencies` | array | Autres plugins que ce plugin nécessite, optionnellement avec des contraintes de version semver. Consultez [Contraindre les versions de dépendance des plugins](/docs/fr/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

558 558 

559<h3 id="experimental-components">559<h3 id="experimental-components">

560 Composants expérimentaux560 Composants expérimentaux


601 601 

602Chaque valeur est disponible pour la substitution en tant que `${user_config.KEY}` dans les configurations de serveurs MCP et LSP et les commandes de hook. Les valeurs non sensibles peuvent également être substituées dans le contenu des skills 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.602Chaque valeur est disponible pour la substitution en tant que `${user_config.KEY}` dans les configurations de serveurs MCP et LSP et les commandes de hook. Les valeurs non sensibles peuvent également être substituées dans le contenu des skills 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.

603 603 

604Les champs qui s'exécutent dans un shell rejettent `${user_config.*}` : substituer une valeur configurée dans une commande shell laisserait le shell exécuter tout ce que cette valeur contient, donc le composant échoue avec une [erreur](/fr/errors#plugin-command-references-user-config) à la place. Chaque champ rejeté a une façon alternative de passer la valeur :604Les champs qui s'exécutent dans un shell rejettent `${user_config.*}` : substituer une valeur configurée dans une commande shell laisserait le shell 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 façon alternative de passer la valeur :

605 605 

606| Champ rejeté | Comment passer la valeur |606| Champ rejeté | Comment passer la valeur |

607| :--------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |607| :--------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |

608| Commandes de hook de forme shell | Utilisez la [forme exec](/fr/hooks#exec-form-and-shell-form) avec `args`, ou lisez `CLAUDE_PLUGIN_OPTION_<KEY>` depuis l'environnement du hook |608| Commandes de hook de forme shell | Utilisez la [forme exec](/docs/fr/hooks#exec-form-and-shell-form) avec `args`, ou lisez `CLAUDE_PLUGIN_OPTION_<KEY>` depuis l'environnement du hook |

609| Commandes de [Monitor](#monitors) | Lisez la valeur depuis un fichier de configuration dans le script |609| Commandes de [Monitor](#monitors) | Lisez la valeur depuis un fichier de configuration dans le script |

610| MCP [`headersHelper`](/fr/mcp#use-dynamic-headers-for-custom-authentication) | Lisez la valeur depuis un fichier de configuration dans le script |610| MCP [`headersHelper`](/docs/fr/mcp#use-dynamic-headers-for-custom-authentication) | Lisez la valeur depuis un fichier de configuration dans le script |

611 611 

612Avant v2.1.207, ces champs substituaient les valeurs `${user_config.KEY}` ; mettez à jour les plugins qui s'appuyaient sur ceci.612Avant v2.1.207, ces champs substituaient les valeurs `${user_config.KEY}` ; mettez à jour les plugins qui s'appuyaient sur ceci.

613 613 

614Les valeurs non sensibles sont stockées sous la clé [`pluginConfigs`](/fr/settings#pluginconfigs) dans `settings.json` en tant que `pluginConfigs[<plugin-id>].options`. {/* min-version: 2.1.207 */}Claude Code écrit la clé dans les paramètres utilisateur et la relit depuis les paramètres utilisateur, l'indicateur `--settings`, et les paramètres gérés uniquement ; les entrées dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet sont ignorées. Avant v2.1.207, Claude Code lisait également les paramètres du projet et locaux.614Les valeurs non sensibles sont stockées sous la clé [`pluginConfigs`](/docs/fr/settings#pluginconfigs) dans `settings.json` en tant que `pluginConfigs[<plugin-id>].options`. {/* min-version: 2.1.207 */}Claude Code écrit la clé dans les paramètres utilisateur et la relit depuis les paramètres utilisateur, l'indicateur `--settings`, et les paramètres gérés uniquement ; les entrées dans le `.claude/settings.json` ou `.claude/settings.local.json` d'un projet sont ignorées. Avant v2.1.207, Claude Code lisait également les paramètres du projet et locaux.

615 615 

616Les valeurs sensibles vont au trousseau macOS, ou à `~/.claude/.credentials.json` sur les plates-formes où aucun trousseau pris en charge n'est disponible. 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.616Les valeurs sensibles vont au trousseau macOS, ou à `~/.claude/.credentials.json` sur les plates-formes où aucun trousseau pris en charge n'est disponible. 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.

617 617 


653Qu'un chemin personnalisé remplace ou étende le répertoire par défaut du plugin dépend du champ :653Qu'un chemin personnalisé remplace ou étende le répertoire par défaut du plugin dépend du champ :

654 654 

655* **Remplace le répertoire par défaut** : `commands`, `agents`, `outputStyles`, `experimental.themes`, `experimental.monitors`. Par exemple, quand le manifeste spécifie `commands`, le répertoire par défaut `commands/` n'est pas analysé. Pour conserver le répertoire par défaut et en ajouter d'autres, listez-le explicitement : `"commands": ["./commands/", "./extras/"]`655* **Remplace le répertoire par défaut** : `commands`, `agents`, `outputStyles`, `experimental.themes`, `experimental.monitors`. Par exemple, quand le manifeste spécifie `commands`, le répertoire par défaut `commands/` n'est pas analysé. Pour conserver le répertoire par défaut et en ajouter d'autres, listez-le explicitement : `"commands": ["./commands/", "./extras/"]`

656* **S'ajoute au répertoire par 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 de marketplace dont la `source` se résout à la racine de la marketplace](/fr/plugin-marketplaces#advanced-plugin-entries), déclarer des sous-répertoires spécifiques remplace l'analyse par défaut `skills/`656* **S'ajoute au répertoire par 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 de marketplace dont la `source` se résout à la racine de la marketplace](/docs/fr/plugin-marketplaces#advanced-plugin-entries), déclarer des sous-répertoires spécifiques remplace l'analyse par défaut `skills/`

657* **Règles de fusion propres** : [hooks](#hooks), [Serveurs MCP](#mcp-servers), et [Serveurs LSP](#lsp-servers). Consultez chaque section pour savoir comment plusieurs sources se combinent657* **Règles de fusion propres** : [hooks](#hooks), [Serveurs MCP](#mcp-servers), et [Serveurs LSP](#lsp-servers). Consultez chaque section pour savoir comment plusieurs sources se combinent

658 658 

659Quand un plugin a à la fois un dossier par défaut et la clé de manifeste correspondante, Claude Code v2.1.140 et versions ultérieures signale le dossier ignoré dans `claude plugin list` et la vue de détail `/plugin`. Le plugin se charge toujours en utilisant les chemins du manifeste. Aucun avertissement n'est affiché quand la clé de manifeste pointe dans le dossier par défaut, par exemple `"commands": ["./commands/deploy.md"]`, car le dossier est adressé explicitement dans ce cas.659Quand un plugin a à la fois un dossier par défaut et la clé de manifeste correspondante, Claude Code v2.1.140 et versions ultérieures signale le dossier ignoré dans `claude plugin list` et la vue de détail `/plugin`. Le plugin se charge toujours en utilisant les chemins du manifeste. Aucun avertissement n'est affiché quand la clé de manifeste pointe dans le dossier par défaut, par exemple `"commands": ["./commands/deploy.md"]`, car le dossier est adressé explicitement dans ce cas.


704| Serveurs MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` |704| Serveurs MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` |

705| Serveurs LSP | `command`, `args`, `env`, `workspaceFolder` |705| Serveurs LSP | `command`, `args`, `env`, `workspaceFolder` |

706 706 

707Dans les commandes de hook, utilisez la [forme exec](/fr/hooks#exec-form-and-shell-form) avec `args` pour que chaque chemin soit passé comme un seul argument sans guillemets. Dans les hooks de forme shell et les commandes de moniteur, enveloppez les variables entre guillemets doubles, comme dans `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`. Ce hook de forme shell exécute un script fourni avec un plugin :707Dans les commandes de hook, utilisez la [forme exec](/docs/fr/hooks#exec-form-and-shell-form) avec `args` pour que chaque chemin soit passé comme un seul argument sans guillemets. Dans les hooks de forme shell et les commandes de moniteur, enveloppez les variables entre guillemets doubles, comme dans `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`. Ce hook de forme shell exécute un script fourni avec un plugin :

708 708 

709```json theme={null}709```json theme={null}

710{710{


727 727 

728Quand un plugin se met à jour en cours 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.728Quand un plugin se met à jour en cours 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.

729 729 

730Les serveurs MCP peuvent également appeler la requête `roots/list` pour lire les répertoires de travail de la session à l'exécution. Consultez [ce que `roots/list` retourne et quand Claude Code notifie le serveur des modifications](/fr/mcp#option-3-add-a-local-stdio-server).730Les serveurs MCP peuvent également appeler la requête `roots/list` pour lire les répertoires de travail de la session à l'exécution. Consultez [ce que `roots/list` retourne et quand Claude Code notifie le serveur des modifications](/docs/fr/mcp#option-3-add-a-local-stdio-server).

731 731 

732<h4 id="persistent-data-directory">732<h4 id="persistent-data-directory">

733 Répertoire de données persistantes733 Répertoire de données persistantes


893| **Serveurs LSP** | `.lsp.json` | Configurations du serveur de langage |893| **Serveurs LSP** | `.lsp.json` | Configurations du serveur de langage |

894| **Moniteurs** | `monitors/monitors.json` | Configurations de moniteur en arrière-plan |894| **Moniteurs** | `monitors/monitors.json` | Configurations de moniteur en arrière-plan |

895| **Exécutables** | `bin/` | Exécutables ajoutés au `PATH` de l'outil Bash. Les fichiers ici sont invocables en tant que commandes nues dans n'importe quel appel d'outil Bash tandis que le plugin est activé |895| **Exécutables** | `bin/` | Exécutables ajoutés au `PATH` de l'outil Bash. Les fichiers ici sont invocables en tant que commandes nues dans n'importe quel appel d'outil Bash tandis que le plugin est activé |

896| **Paramètres** | `settings.json` | Configuration par défaut appliquée quand le plugin est activé. Seules les clés [`agent`](/fr/sub-agents) et [`subagentStatusLine`](/fr/statusline#subagent-status-lines) sont actuellement prises en charge |896| **Paramètres** | `settings.json` | Configuration par défaut appliquée quand le plugin est activé. Seules les clés [`agent`](/docs/fr/sub-agents) et [`subagentStatusLine`](/docs/fr/statusline#subagent-status-lines) sont actuellement prises en charge |

897 897 

898***898***

899 899 


942| `mcp` | Un `.mcp.json` avec des exemples de serveur HTTP et stdio |942| `mcp` | Un `.mcp.json` avec des exemples de serveur HTTP et stdio |

943| `lsp` | Un exemple `.lsp.json` de serveur de langage |943| `lsp` | Un exemple `.lsp.json` de serveur de langage |

944| `output-style` | Un `output-styles/<name>.md` qui s'applique automatiquement tandis que le plugin est activé |944| `output-style` | Un `output-styles/<name>.md` qui s'applique automatiquement tandis que le plugin est activé |

945| `channel` | Un [canal](/fr/channels) basé sur MCP : un serveur stdio (`server.ts`), son `.mcp.json` et un `package.json` |945| `channel` | Un [canal](/docs/fr/channels) basé sur MCP : un serveur stdio (`server.ts`), son `.mcp.json` et un `package.json` |

946 946 

947Le plugin généré 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](/fr/plugin-marketplaces#managed-marketplace-restrictions). Quand bloqué, `plugin init` échoue avant d'écrire.947Le plugin généré 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). Quand bloqué, `plugin init` échoue avant d'écrire.

948 948 

949**Exemples :**949**Exemples :**

950 950 


1027 plugin prune1027 plugin prune

1028</h3>1028</h3>

1029 1029 

1030Supprimez les dépendances de plugins 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`](/fr/plugin-dependencies) d'un autre plugin sont supprimées ; les plugins que vous avez installés directement ne sont jamais touchés.1030Supprimez les dépendances de plugins 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.

1031 1031 

1032```bash theme={null}1032```bash theme={null}

1033claude plugin prune [options]1033claude plugin prune [options]


1054 plugin enable1054 plugin enable

1055</h3>1055</h3>

1056 1056 

1057Activez un plugin désactivé. Si le plugin déclare des [dépendances](/fr/plugin-dependencies), Claude Code les active transitivement à la même portée, et la commande échoue quand une dépendance n'est pas installée.1057Activez un plugin désactivé. Si le plugin déclare des [dépendances](/docs/fr/plugin-dependencies), Claude Code les active transitivement à la même portée, et la commande échoue quand une dépendance n'est pas installée.

1058 1058 

1059```bash theme={null}1059```bash theme={null}

1060claude plugin enable <plugin> [options]1060claude plugin enable <plugin> [options]


1075 plugin disable1075 plugin disable

1076</h3>1076</h3>

1077 1077 

1078Désactivez un plugin sans le désinstaller. Échoue quand un autre plugin activé [dépend de](/fr/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) la cible. Le message d'erreur inclut une commande chaînée qui désactive d'abord chaque dépendant.1078Désactivez un plugin sans le désinstaller. Échoue quand un autre plugin activé [dépend de](/docs/fr/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) la cible. Le message d'erreur inclut une commande chaînée qui désactive d'abord chaque dépendant.

1079 1079 

1080```bash theme={null}1080```bash theme={null}

1081claude plugin disable <plugin> [options]1081claude plugin disable <plugin> [options]


1192 plugin tag1192 plugin tag

1193</h3>1193</h3>

1194 1194 

1195Créez une balise de version git pour le plugin dans le répertoire actuel. Exécutez depuis l'intérieur du dossier du plugin. Voir [Baliser les versions des plugins](/fr/plugin-dependencies#tag-plugin-releases-for-version-resolution).1195Créez une balise de version git pour le plugin dans le répertoire actuel. Exécutez depuis l'intérieur du dossier du plugin. Voir [Baliser les versions des plugins](/docs/fr/plugin-dependencies#tag-plugin-releases-for-version-resolution).

1196 1196 

1197```bash theme={null}1197```bash theme={null}

1198claude plugin tag [options]1198claude plugin tag [options]


1352 Voir aussi1352 Voir aussi

1353</h2>1353</h2>

1354 1354 

1355* [Plugins](/fr/plugins) - Tutoriels et utilisation pratique1355* [Plugins](/docs/fr/plugins) - Tutoriels et utilisation pratique

1356* [Marketplaces de plugins](/fr/plugin-marketplaces) - Création et gestion des marketplaces1356* [Marketplaces de plugins](/docs/fr/plugin-marketplaces) - Création et gestion des marketplaces

1357* [Skills](/fr/skills) - Détails du développement des skills1357* [Skills](/docs/fr/skills) - Détails du développement des skills

1358* [Subagents](/fr/sub-agents) - Configuration et capacités des agents1358* [Subagents](/docs/fr/sub-agents) - Configuration et capacités des agents

1359* [Hooks](/fr/hooks) - Gestion des événements et automatisation1359* [Hooks](/docs/fr/hooks) - Gestion des événements et automatisation

1360* [MCP](/fr/mcp) - Intégration des outils externes1360* [MCP](/docs/fr/mcp) - Intégration des outils externes

1361* [Paramètres](/fr/settings) - Options de configuration pour les plugins1361* [Paramètres](/docs/fr/settings) - Options de configuration pour les plugins

troubleshooting.md +18 −14

Details

10 10 

11| Symptôme | Aller à |11| Symptôme | Aller à |

12| :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- |12| :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- |

13| `command not found`, l'installation échoue, problèmes de PATH, `EACCES`, erreurs TLS | [Dépanner l'installation et la connexion](/fr/troubleshoot-install) |13| `command not found`, l'installation échoue, problèmes de PATH, `EACCES`, erreurs TLS | [Dépanner l'installation et la connexion](/docs/fr/troubleshoot-install) |

14| Mise à jour ou l'installation du téléchargement échoue avec `The connection dropped while downloading the update` ou `aborted` | [Référence des erreurs](/fr/errors#the-connection-dropped-while-downloading-the-update) |14| Mise à jour ou l'installation du téléchargement échoue avec `The connection dropped while downloading the update` ou `aborted` | [Référence des erreurs](/docs/fr/errors#the-connection-dropped-while-downloading-the-update) |

15| Boucles de connexion, erreurs OAuth, `403 Forbidden`, « organisation désactivée », identifiants Amazon Bedrock, Google Cloud's Agent Platform ou Microsoft Foundry | [Dépanner l'installation et la connexion](/fr/troubleshoot-install#login-and-authentication) |15| Boucles de connexion, erreurs OAuth, `403 Forbidden`, « organisation désactivée », identifiants Amazon Bedrock, Google Cloud's Agent Platform ou Microsoft Foundry | [Dépanner l'installation et la connexion](/docs/fr/troubleshoot-install#login-and-authentication) |

16| Les paramètres ne s'appliquent pas, les hooks ne se déclenchent pas, les serveurs MCP ne se chargent pas | [Déboguer votre configuration](/fr/debug-your-config) |16| Les paramètres ne s'appliquent pas, les hooks ne se déclenchent pas, les serveurs MCP ne se chargent pas | [Déboguer votre configuration](/docs/fr/debug-your-config) |

17| `API Error: 5xx`, `529 Overloaded`, `429`, erreurs de validation de requête | [Référence des erreurs](/fr/errors) |17| `API Error: 5xx`, `529 Overloaded`, `429`, erreurs de validation de requête | [Référence des erreurs](/docs/fr/errors) |

18| `model not found` ou `you may not have access to it` | [Référence des erreurs](/fr/errors#theres-an-issue-with-the-selected-model) |18| `model not found` ou `you may not have access to it` | [Référence des erreurs](/docs/fr/errors#theres-an-issue-with-the-selected-model) |

19| L'extension VS Code ne se connecte pas ou ne détecte pas Claude | [Intégration VS Code](/fr/vs-code#fix-common-issues) |19| L'extension VS Code ne se connecte pas ou ne détecte pas Claude | [Intégration VS Code](/docs/fr/vs-code#fix-common-issues) |

20| Le plugin JetBrains ou l'IDE n'est pas détecté | [Intégration JetBrains](/fr/jetbrains#troubleshooting) |20| Le plugin JetBrains ou l'IDE n'est pas détecté | [Intégration JetBrains](/docs/fr/jetbrains#troubleshooting) |

21| Utilisation élevée du CPU ou de la mémoire, réponses lentes, blocages, la recherche ne trouve pas les fichiers | [Performance et stabilité](#performance-and-stability) ci-dessous |21| Utilisation élevée du CPU ou de la mémoire, réponses lentes, blocages, la recherche ne trouve pas les fichiers | [Performance et stabilité](#performance-and-stability) ci-dessous |

22 22 

23Si vous n'êtes pas sûr de ce qui s'applique, exécutez `/doctor` dans Claude Code pour une vérification automatisée de votre installation, vos paramètres, vos extensions et votre utilisation du contexte ; il propose des corrections qu'il peut appliquer après votre confirmation. Si `claude` ne démarre pas du tout, exécutez `claude doctor` depuis votre shell à la place. Exécutez `/mcp` pour vérifier l'état du serveur MCP.23Si vous n'êtes pas sûr de ce qui s'applique, exécutez `/doctor` dans Claude Code pour une vérification automatisée de votre installation, vos paramètres, vos extensions et votre utilisation du contexte ; il propose des corrections qu'il peut appliquer après votre confirmation. Si `claude` ne démarre pas du tout, exécutez `claude doctor` depuis votre shell à la place. Exécutez `/mcp` pour vérifier l'état du serveur MCP.


371. Utilisez `/compact` régulièrement pour réduire la taille du contexte371. Utilisez `/compact` régulièrement pour réduire la taille du contexte

382. Fermez et redémarrez Claude Code entre les tâches majeures382. Fermez et redémarrez Claude Code entre les tâches majeures

393. Envisagez d'ajouter les grands répertoires de construction à votre fichier `.gitignore`393. Envisagez d'ajouter les grands répertoires de construction à votre fichier `.gitignore`

404. Redémarrez avec [`claude --safe-mode`](/fr/cli-reference#cli-flags) pour vérifier si un plugin, un serveur MCP ou un hook est la source. Cela désactive toutes les personnalisations pour la session ; si l'utilisation diminue, consultez [Déboguer votre configuration](/fr/debug-your-config#test-against-a-clean-configuration) pour trouver lequel404. Redémarrez avec [`claude --safe-mode`](/docs/fr/cli-reference#cli-flags) pour vérifier si un plugin, un serveur MCP ou un hook est la source. Cela désactive toutes les personnalisations pour la session ; si l'utilisation diminue, consultez [Déboguer votre configuration](/docs/fr/debug-your-config#test-against-a-clean-configuration) pour trouver lequel

41 41 

42Si l'utilisation de la mémoire reste élevée après ces étapes, exécutez `/heapdump` pour écrire un snapshot de tas JavaScript et une ventilation de la mémoire sur `~/Desktop`. Sur Linux sans dossier Desktop, les fichiers sont écrits dans votre répertoire personnel.42Si l'utilisation de la mémoire reste élevée après ces étapes, exécutez `/heapdump` pour écrire un snapshot de tas JavaScript et une ventilation de la mémoire sur `~/Desktop`. Sur Linux sans dossier Desktop, les fichiers sont écrits dans votre répertoire personnel.

43 43 

44La ventilation affiche la taille de l'ensemble résident, le tas JS, les tampons de tableau et la mémoire native non comptabilisée, ce qui aide à identifier si la croissance est dans les objets JavaScript ou dans le code natif. Pour inspecter les rétenteurs, ouvrez le fichier `.heapsnapshot` dans Chrome DevTools sous Memory → Load. Joignez les deux fichiers lors de la signalisation d'un problème de mémoire sur [GitHub](https://github.com/anthropics/claude-code/issues).44La ventilation affiche la taille de l'ensemble résidant, le tas JS, les tampons de tableau et la mémoire native non comptabilisée, ce qui aide à identifier si la croissance se trouve dans les objets JavaScript ou dans le code natif. Pour inspecter les rétenteurs, ouvrez le fichier `.heapsnapshot` dans Chrome DevTools sous Memory → Load ; la ventilation est le fichier se terminant par `-diagnostics.json`.

45 

46<Warning>

47 Le fichier `.heapsnapshot` contient chaque chaîne du processus. Ne l'attachez pas à un problème public ou ne le partagez pas. Attachez uniquement le fichier `-diagnostics.json` lors de la signalisation d'un problème de mémoire sur [GitHub](https://github.com/anthropics/claude-code/issues). Ce fichier contient les statistiques de mémoire et aucun contenu de conversation ou identifiants.

48</Warning>

45 49 

46<h3 id="large-tables-are-cut-off-in-the-terminal">50<h3 id="large-tables-are-cut-off-in-the-terminal">

47 Les grandes tables sont coupées dans le terminal51 Les grandes tables sont coupées dans le terminal

48</h3>52</h3>

49 53 

50Un tableau Markdown avec plus de 200 lignes affiche ses 200 premières lignes suivies d'une ligne `… N more rows not shown`. Seul l'affichage est limité : le tableau complet reste dans la conversation, et [`/copy`](/fr/commands) copie chaque ligne. Pour un tableau trop volumineux pour être lu dans le terminal, demandez à Claude de l'écrire dans un fichier à la place. Avant la v2.1.208, Claude Code affichait chaque ligne, donc reprendre une session qui contenait un très grand tableau pouvait se bloquer lors du re-rendu.54Un tableau Markdown avec plus de 200 lignes affiche ses 200 premières lignes suivies d'une ligne `… N more rows not shown`. Seul l'affichage est limité : le tableau complet reste dans la conversation, et [`/copy`](/docs/fr/commands) copie chaque ligne. Pour un tableau trop volumineux pour être lu dans le terminal, demandez à Claude de l'écrire dans un fichier à la place. Avant la v2.1.208, Claude Code affichait chaque ligne, donc reprendre une session qui contenait un très grand tableau pouvait se bloquer lors du re-rendu.

51 55 

52<h3 id="auto-compaction-stops-with-a-thrashing-error">56<h3 id="auto-compaction-stops-with-a-thrashing-error">

53 L'auto-compaction s'arrête avec une erreur de thrashing57 L'auto-compaction s'arrête avec une erreur de thrashing


59 63 

601. Demandez à Claude de lire le fichier surdimensionné en petits morceaux, comme une plage de lignes spécifique ou une fonction, au lieu du fichier entier641. Demandez à Claude de lire le fichier surdimensionné en petits morceaux, comme une plage de lignes spécifique ou une fonction, au lieu du fichier entier

612. Exécutez `/compact` avec un focus qui supprime la sortie volumineuse, par exemple `/compact keep only the plan and the diff`652. Exécutez `/compact` avec un focus qui supprime la sortie volumineuse, par exemple `/compact keep only the plan and the diff`

623. Déplacez le travail sur fichier volumineux vers un [sous-agent](/fr/sub-agents) pour qu'il s'exécute dans une fenêtre de contexte séparée663. Déplacez le travail sur fichier volumineux vers un [sous-agent](/docs/fr/sub-agents) pour qu'il s'exécute dans une fenêtre de contexte séparée

634. Exécutez `/clear` si la conversation antérieure n'est plus nécessaire674. Exécutez `/clear` si la conversation antérieure n'est plus nécessaire

64 68 

65<h3 id="command-hangs-or-freezes">69<h3 id="command-hangs-or-freezes">


77 Texte garbled ou corrompu dans le terminal intégré d'un éditeur81 Texte garbled ou corrompu dans le terminal intégré d'un éditeur

78</h3>82</h3>

79 83 

80Si les caractères s'affichent sous forme de boîtes, de traînées ou de glyphes incorrects lors de l'exécution de Claude Code dans le terminal intégré de VS Code, Cursor ou Devin Desktop, le rendu GPU du terminal en est probablement la cause. Exécutez `/terminal-setup` dans Claude Code pour définir `terminal.integrated.gpuAcceleration` sur `"off"`, ou définissez-le manuellement dans les paramètres de votre éditeur et rechargez la fenêtre. Consultez [Configuration du terminal](/fr/terminal-config) pour les autres paramètres que `/terminal-setup` écrit.84Si les caractères s'affichent sous forme de boîtes, de traînées ou de glyphes incorrects lors de l'exécution de Claude Code dans le terminal intégré de VS Code, Cursor ou Devin Desktop, le rendu GPU du terminal en est probablement la cause. Exécutez `/terminal-setup` dans Claude Code pour définir `terminal.integrated.gpuAcceleration` sur `"off"`, ou définissez-le manuellement dans les paramètres de votre éditeur et rechargez la fenêtre. Consultez [Configuration du terminal](/docs/fr/terminal-config) pour les autres paramètres que `/terminal-setup` écrit.

81 85 

82<h3 id="search-and-discovery-issues">86<h3 id="search-and-discovery-issues">

83 Problèmes de recherche et de découverte87 Problèmes de recherche et de découverte


117 </Tab>121 </Tab>

118</Tabs>122</Tabs>

119 123 

120Ensuite, définissez `USE_BUILTIN_RIPGREP=0` dans votre [environnement](/fr/env-vars).124Ensuite, définissez `USE_BUILTIN_RIPGREP=0` dans votre [environnement](/docs/fr/env-vars).

121 125 

122<h3 id="slow-or-incomplete-search-results-on-wsl">126<h3 id="slow-or-incomplete-search-results-on-wsl">

123 Résultats de recherche lents ou incomplets sur WSL127 Résultats de recherche lents ou incomplets sur WSL